我有一张欠钱的表格,以及一个团队标识符(例如可以是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子句时失败了。
请有人帮忙解决这个问题吗
答案 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字段来自欠款,而不是团队,否则您将在空字段上进行分组。
这是否解决了这个问题?