mysql – 使用UNION ALL查询多个表时,AS关键字仅适用于第一个表

我有一个问题:

 (SELECT col1 AS table1 FROM table1 WHERE col3 IS NOT NULL)
    UNION ALL
    (SELECT col1 AS table2 FROM table2 WHERE  col3 IS NOT NULL)
    UNION ALL
    (SELECT col1 AS table3 FROM table3 WHERE col3 IS NOT NULL)

但是当我使用PDO和fetchAll(PDO :: FETCH_ASSOC)处理它时;命令,生成的数组的所有键都作为table1出现,而不管它们实际来自哪个表.

我的语法不正确吗?谢谢!

最佳答案
您的查询返回单个列.单个列只能有一个名称/别名.在UNION查询中,第一个子查询定义结果集的列名.

如果要指定每个值来自哪个表,请添加另一列,例如像这样:

(SELECT col1, 'table1' AS src FROM table1 WHERE col3 IS NOT NULL)
UNION ALL
(SELECT col1, 'table2'        FROM table2 WHERE col3 IS NOT NULL)
UNION ALL
(SELECT col1, 'table3'        FROM table3 WHERE col3 IS NOT NULL)

转载注明原文:mysql – 使用UNION ALL查询多个表时,AS关键字仅适用于第一个表 - 代码日志