首页 > 解决方案 > 如何从具有限制 0、1 的同一个表中运行多个选择查询并组合所有结果

问题描述

我需要从具有不同 where 条件的同一张表中查询数据。

如下查询所示,我需要从同一个表中执行 2 个选择查询,然后将结果合并为一个。

SELECT Username, AddTime
FROM Table1
WHERE Type = 3 AND AddTime>="2019-07-11 13:30:00" AND Username="Test1"
LIMIT 0, 1

SELECT Username, AddTime
FROM Table1
WHERE Type = 3 AND AddTime>="2019-07-11 13:40:00" AND Username="Test2"
LIMIT 0, 1

我需要将两个查询的结果合并为一个结果。所以基本上如果我有 5 个这样的查询,那么我需要得到行数等于 5 的结果。

我也可以每次都使用循环和查询语句,但这需要创建大量的 sql 连接。是否有可能在一个数据库连接中实现这一点?

标签: mysqldatabase

解决方案


您可以在这里使用联合查询:

(SELECT Username, AddTime
 FROM Table1
 WHERE Type = 3 AND AddTime >= '2019-07-11 13:30:00' AND Username = 'Test1'
 LIMIT 1)
UNION ALL
(SELECT Username, AddTime
 FROM Table1
 WHERE Type = 3 AND AddTime >= '2019-07-11 13:40:00' AND Username = 'Test2'
 LIMIT 1);

如果您使用的是 MySQL 8+,也可能有一种方法可以将单个查询与ROW_NUMBER.


推荐阅读