MySQL:从多个表中获取字段,每个结果代表一行

时间:2015-02-20 17:38:06

标签: mysql

我有多个具有这种结构的表:

+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| nick     | char(25) | NO   | PRI | NULL    |       |
| id       | int(11)  | NO   |     | NULL    |       |
| cooldown | datetime | NO   |     | NULL    |       |
+----------+----------+------+-----+---------+-------+

我想从id获得所有这些表格中的所有nick字段。这些表格(我们称之为table1table2table3)可能为空,也可能不为空。在一个查询中执行此操作的最佳方法是什么?

我想要的输出如下:

+-------+
| id    |
+-------+
| 15679 |
| 72620 |
+-------+

2 个答案:

答案 0 :(得分:1)

您需要UNION查询:

SELECT id FROM table1 WHERE nick='nick'
UNION
SELECT id FROM table2 WHERE nick='nick'
UNION
SELECT id FROM table3 WHERE nick='nick'

UNION只会返回唯一的行,如果您希望查询返回重复项,则可以使用UNION ALL代替。

答案 1 :(得分:0)

Select Id from table1 where nick=nick
UNION
Select Id from table2 where nick=nick
UNION
...
UNION
...