MySQL将两个表中的数据与表名组合在一起

时间:2015-08-02 04:40:13

标签: mysql

我目前有两个表,table1和table2。这些表具有相同的结构,但包含不同的数据。

我需要的是一个将table1和table2的数据组合在一起的查询,还指定数据来自哪个表。

例如,如果table1和table2看起来像:

+------+     +------+
| name |     | name |
+------+     +------+
| Bob  |     | Rob  |
+------+ and +------+

我想要一个结果表:

+------+--------+
| name |  from  |
+------+--------+
| Bob  | table1 |
+------+--------+
| Rob  | table2 |
+------+--------+

我想出的唯一一个SQL是:

SELECT name FROM table1 UNION SELECT name FROM table2;

但是这不会添加行来自的表名。

谢谢!

2 个答案:

答案 0 :(得分:1)

<强>查询

SELECT name, 'table1' as `from`
FROM table1 
UNION ALL 
SELECT name, 'table2' as `from`
FROM table2
;

<强>输出

+------+--------+
| name |  from  |
+------+--------+
| Bob  | table1 |
| Rob  | table2 |
+------+--------+

sqlfiddle

答案 1 :(得分:-1)

最好不要使用'from'作为结果列,因为它是SQL中的保留字,但你可以这样做

SELECT name, 'table1' AS [from] FROM table1
UNION ALL
SELECT name, 'table2' AS [from] FROM table2