想要在mysql表中获取两个特定行的SUM。
create table people(
id int,
firstname varchar(50),
money int
);
id firstname money
1 david 100
2 jack 200
3 bob 300
Run Code Online (Sandbox Code Playgroud)
说我只想要第1行(大卫)和第3行(鲍勃)的总和。总数应为400。
我用这个查询:
SELECT SUM(money)
FROM people
WHERE id = 1 AND 3;
Run Code Online (Sandbox Code Playgroud)
但结果是100,而不是我预期的400。
这是您的查询。您可以使用case和in获取此信息。
select sum(case when id = 1 or id = 3 then money else 0 end) from people
要么
select sum(money) from people where id in (1, 3)
Run Code Online (Sandbox Code Playgroud)
@Metal给出的答案是解决方法:
SELECT SUM(money)
FROM people
WHERE id IN (1, 3);
Run Code Online (Sandbox Code Playgroud)
我主要是为了说明这一点,以解释您当前的查询为什么会给您100的总和。原因是该WHERE条件:
WHERE id = 1 AND 3
Run Code Online (Sandbox Code Playgroud)
仅在时才为真id = 1,即为大卫的记录。该值3始终评估为true。因此,您只需要对David的记录进行汇总,就可以得到总计100。