phpmyadmin mysql union中的条件有sintax错误

时间:2017-08-26 16:21:09

标签: 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子句,我会收到sintax错误:

(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 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在UNION附近使用正确的语法   ('第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的错误还是我错过了其他内容?

2 个答案:

答案 0 :(得分:1)

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

更新

显然,这与修复here的错误相同。如果你升级到phpmyadmin v4.5.3.0或更高版本,那么这个bug就不再存在了。

答案 1 :(得分:0)

您使用phpmyadmin文档表明您忘记了;在您的请求结束时。它存在于控制台文档中。只是一个想法。