SELECT users.xp, users.clan, clans.name,
SUM(CASE WHEN users.clan = clans.name
THEN users.xp
END) AS total
FROM users, clans
WHERE users.clan = clans.name
为什么当有多个部落时,此SQL查询只打印出一条记录,而部族中有几个用户使用xp。 它确实打印出它所显示的给定氏族中xp的正确总和,但我还需要其余的部族。
答案 0 :(得分:1)
因为您使用的是SUM()
聚合(组)功能。
"如果在不包含GROUP BY的语句中使用组函数 子句,它相当于对所有行进行分组。"
查看:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html
答案 1 :(得分:1)
当你使用组函数时,mysql会通过将结果聚合到一行来“帮助”你。要获得每个部落一行,请使用GROUP BY
:
SELECT clans.name, SUM(users.xp) AS total
FROM users, clans
WHERE users.clan = clans.name
GROUP BY clans.name