如何只求和特定行的值?

pri*_*est 3 mysql sql

想要在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

ϻᴇᴛ*_*ᴛᴀʟ 7

这是您的查询。您可以使用casein获取此信息。

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)


Tim*_*sen 7

@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。