如何将 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 个?的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework Core:如何将 2 个 COUNT 查询合并为一个

将 2 个不同的查询合并为一个

Laravel:将 2 个查询合并为 1 个

如何将2个图像合并/合并为1个

SQL - 如何避免将三个查询合并为一个

如何将这 25 个 INSERT 查询合并为一个?