结合类似的mysql SUM查询,其中一个具有额外的WHERE子句

时间:2017-11-06 14:27:30

标签: mysql

我们有以下基本查询来计算两个总和:

SELECT SUM(col_x) AS sum_id FROM table WHERE col_y=1
SELECT SUM(col_x) AS sum_id FROM table WHERE col_y=1 AND col_z=2

有没有办法我们可以有效地将这些组合成一个返回每个总和的查询,希望第二个查询在第一个查询的结果上过滤?

1 个答案:

答案 0 :(得分:1)

你也可以这样做:

SELECT
    SUM(`points`) AS `all_sum`, 
    SUM(IF(`type` = 'basic', `points`, 0)) AS `basic_sum` -- Only count the points if the type is basic
FROM
    `events`
WHERE
    `status` = 2 -- Only look at rows where the status is 2

您当然也可以使用CASE,但对于这个问题,IF可能更容易阅读(这是一种偏好)。 MySQL - CASE vs IF Statement vs IF function