我有一个名为TABLES的表。 TABLES有一个TABLE_NAME列。
对于每个TABLE_NAME,数据库中都有一个表。所有这些表的结构都是相同的。
最终我想从每个表中的UNION列。但我没有接近这个目标。
我坚持以下查询:
SELECT column_name FROM (SELECT table_name FROM TABLES) T;
返回的错误是"ERROR 1054 (42S22): Unknown column 'column_name' in 'filed list'.
我还没有看到SELECT...FROM (SELECT...FROM)
非常感谢任何帮助。
答案 0 :(得分:1)
你可以尝试
SELECT column_name FROM (SELECT column_name FROM TABLES) T;
OR
SELECT column_name FROM (SELECT * FROM TABLES) T;
答案 1 :(得分:1)
使用静态查询无法实现此目的。如果由于某种原因确实需要这个,你必须使用动态SQL
SET @sql = NULL;
SELECT GROUP_CONCAT(CONCAT('SELECT column_name FROM `', table_name, '`') SEPARATOR ' UNION ALL ')
INTO @sql
FROM tables;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
这是 SQLFiddle 演示
为简化调用方面的事情,您始终可以将其包装在存储过程中。