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

标签 mysql

我有多个具有以下结构的表:

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

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

我想要的输出如下:

+-------+
| 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/

相关文章:

MySQL:使用 LEFT JOIN 选择

java - 将数据作为 json 字符串插入 Mysql 服务器 - 无数据上传

javascript - 使用 JDBC 将 Google 电子表格连接到 MySQL

mysql - 使用 Locate 和/.or 正则表达式替换?

php - 插入记录时创建 slug 以包含 id 和 title - php MySQL

java - JPA存储库: issue with saving an entity in a big table - timeout error

mysql - App Engine 和 MySQL

mysql - 从多个表中获取一个值的计数

用于生产中 rds 的 Mysql debezium 连接器导致死锁

php - 网络任务所需的语言