如何将 2 个查询合并为 1 个?
Posted
技术标签:
【中文标题】如何将 2 个查询合并为 1 个?【英文标题】:How to merge 2 queries in 1? 【发布时间】:2018-11-27 08:18:29 【问题描述】:我有两个请求做同样的事情,但针对不同的组。
SELECT count() FROM Table1 WHERE label = 'label1' AND group IN (0) AND date >= '2018-01-01' AND date <= '2018-02-01';
SELECT count() FROM Table1 WHERE label = 'label1' AND group IN (3, 4, 5, 6, 7, 8) AND date >= '2018-03-01' AND date <= '2018-03-01';
我可以将其拆分为一个查询吗?
【问题讨论】:
您可以使用UNION ALL
。 Link
【参考方案1】:
你可以使用..
UNION ALL
..在两个查询之间只返回一个结果。它仍然是两个查询,但是,如果您希望它是一个查询,则可以使用 CASE WHEN 。
SELECT
SUM(CASE WHEN group = 0 AND date BETWEEN '2018-01-01' AND '2018-02-01' THEN 1 END) As Group1,
SUM(CASE WHEN group IN (3, 4, 5, 6, 7, 8) AND date BETWEEN '2018-03-01' AND '2018-03-01 THEN 1 END) As Group2
FROM Table1
WHERE label = 'label1'
【讨论】:
请注意,第二次查询的时间段只有一天。我还将 >= 和以上是关于如何将 2 个查询合并为 1 个?的主要内容,如果未能解决你的问题,请参考以下文章