使用sum和group by和ifnull

时间:2011-01-21 14:49:17

标签: mysql sql

我有一张欠钱的表格,以及一个团队标识符(例如可以是1,2,3)

我有另一张表给这些团队标识符命名(因此1可以引用Team1,2可以引用John的jokers等)

第一个表可以有多个欠款的条目,我需要获得每个团队标识符的总欠款,并使用团队名称(如果存在)。

所以我离开了加入表并使用sum子句获得每个teamname所欠的总金额,如果teamname不存在则为null。如果它为null,那么我想使用团队标识符,因此结果看起来像

name            total 
.....................
team1            100  
John's jokers   1000  
99                50

其中99是团队标识符,因为没有团队名称且存在空值。

我尝试使用ifnull(columnName,teamID)但是在使用sum子句时失败了。

请有人帮忙解决这个问题吗

1 个答案:

答案 0 :(得分:3)

我认为ifnull()的使用方式如下:

select ifnull(teams.team_name, teams.team_id) from teams;

因此,在这种情况下,它会尝试检索团队的名称,如果返回null,则使用团队的标识符。在这种情况下,您的查询将如下所示:

select ifnull(teams.team_name, owing.team_id), sum(amount_owed)
  from owing left join teams on owing.team_id = teams.id
 group by owing.team_id

确保该组要求ID字段来自欠款,而不是团队,否则您将在空字段上进行分组。

这是否解决了这个问题?