我需要在MySql中的几个表中构建一个表,我希望它有两个列,如:
------------------- name | table_name | -------------------
我这样做:
Create table teams as
(
Select name from table1
union
Select name from table2
union
Select name from table3);
如何将每个表名包含为第二列?
谢谢!
答案 0 :(得分:2)
包含带引号的字符串文字。一定要给它一个列别名,它将在结果表中用作列名。
CREATE TABLE teams AS
/* Quoted string literal with column alias */
(SELECT name, 'table1' AS `tablename` FROM table1)
UNION
(SELECT name, 'table2' AS `tablename` FROM table2)
UNION
(SELECT name, 'table3' AS `tablename` FROM table3);
请注意,由于您实际上为每一行添加了第二个值,以区别于其他表中可能相似的行,因此UNION
现在是UNION ALL
的等效值,并且重复的行不会像计划UNION
那样被删除。请注意,结果可能与原始UNION
产生的结果不同。