创建表(使用列和表名称)

时间:2012-10-29 14:29:49

标签: mysql sql

我需要在MySql中的几个表中构建一个表,我希望它有两个列,如:

-------------------
name | table_name |
-------------------

我这样做:

Create table teams as 
(
Select name from table1
union
Select name from table2
union
Select name from table3);

如何将每个表名包含为第二列?

谢谢!

1 个答案:

答案 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产生的结果不同。