我们有以下基本查询来计算两个总和:
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
有没有办法我们可以有效地将这些组合成一个返回每个总和的查询,希望第二个查询在第一个查询的结果上过滤?
答案 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