我有多个具有以下结构的表:
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| nick | char(25) | NO | PRI | NULL | |
| id | int(11) | NO | | NULL | |
| cooldown | datetime | NO | | NULL | |
+----------+----------+------+-----+---------+-------+
我想从给定 nick
的所有这些表中获取所有 id
字段。这些表(我们称其为 table1
、table2
、table3
)可能为空,也可能不为空。在一个查询中执行此操作的最佳方法是什么?
我想要的输出如下:
+-------+
| id |
+-------+
| 15679 |
| 72620 |
+-------+
最佳答案
您需要一个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
代替。
关于MySQL:从多个表获取字段,每个结果表示为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28634985/