mysql - phpmyadmin where condition in mysql union 出现语法错误

标签 mysql phpmyadmin

我已经在 phpmyadmin (4.5.2) 中尝试过并且工作正常:

(SELECT 'db1' as DB_NAME, db1_col1, null as dbd2_col1 FROM db1.db1_table1)
UNION
(SELECT 'db2' as DB_NAME, null as dbd1_col1, db2_col1 FROM db2.db2_table1)

The result is:
DB_NAME      db1_col1      dbd2_col1
 db1       DB1_col1_val1     NULL
 db2           NULL       DB2_col1_val1

但是如果我尝试添加一个 where 子句,我会遇到语法错误:

(SELECT 'db1' as DB_NAME, db1_col1, null as dbd2_col1 
    FROM db1.db1_table1 
    WHERE db1_col1 = 'DB1_col1_val1'
)
UNION
(SELECT 'db2' as DB_NAME, null as dbd1_col1, db2_col1  
    FROM db2.db2_table1 
    WHERE db2_col1 = 'DB1_col1_val1'
)

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION (' at line 4

这让我发疯了!

然而,当我在控制台上尝试时,它按预期工作:

mysql> (SELECT 'db1' as DB_NAME, db1_col1, null as dbd2_col1
    -> FROM db1.db1_table1
    -> WHERE db1_col1 = 'DB1_col1_val1'
    -> )
    -> UNION
    -> (SELECT 'db2' as DB_NAME, null as dbd1_col1, db2_col1
    -> FROM db2.db2_table1
    -> WHERE db2_col1 = 'DB1_col1_val1'
    -> );
+---------+---------------+-----------+
| DB_NAME | db1_col1      | dbd2_col1 |
+---------+---------------+-----------+
| db1     | DB1_col1_val1 | NULL      |
+---------+---------------+-----------+
1 row in set (0.00 sec)

还有问题:

这是 phpmyadmin 的错误还是我遗漏了什么?

最佳答案

因为它在控制台中工作,所以它可能是一个 phpmyadmin 错误。我的猜测是 phpmyadmin 试图在第一个查询的右括号后插入其 limit 子句。

更新

显然,这与已修复的错误相同 here .如果升级到 phpmyadmin v4.5.3.0 或更高版本,则此错误不再存在。

关于mysql - phpmyadmin where condition in mysql union 出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45897434/

相关文章:

mysql - 转换 MySQL 的字符长度

mysql - 应用程序引擎和数据缓存(寻找数据解决方案)

MySQL:并发更新(通过线程)一个简单的表

php - 在 WordPress 上运行自动增量 MySQL 查询

Mysql 服务器无法在 Linux 中的 XAMPP 上启动

php - 通过 php/mysql 从表中读取变量

mysql - 查找 MySQL 中记录的行号

linux - 无法在 Ubuntu Server 18.04 上找到软件包 phpmyadmin

php - 计算数据库中特定字段的字符数

phpmyadmin Designer Tab 不同颜色的含义?