只显示一条记录

时间:2016-12-13 14:57:51

标签: mysql sql mysqli

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的正确总和,但我还需要其余的部族。

2 个答案:

答案 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