提问人:Richard Knop 提问时间:8/23/2009 最后编辑:JohnFxRichard Knop 更新时间:2/10/2022 访问量:26633
如果没有记录,如何使 MySQL SUM 查询返回零而不是 null?
How can I make a MySQL SUM query return zero instead of null if there are no records?
问:
这是我选择的查询:
SELECT SUM(rating) AS this_week
FROM table_name
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
这基本上计算了上周项目评级(604800 是 1 周内的秒数)。
问题是,当表中没有行时,this_week将作为 NULL 返回。我希望查询返回 0,以防表中没有行。怎么做?
答:
72赞
Jimmy Stenke
8/23/2009
#1
这应该可以解决问题:
SELECT COALESCE(SUM(rating),0) AS this_week FROM table_name
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
COALESCE 是一个函数,它将从列表中返回第一个非 NULL 值。
37赞
CMerat
8/23/2009
#2
你不能用吗?IFNULL(SUM(rating), 0)
评论
1赞
enemetch
5/18/2017
在使用 CI 活动记录时,此解决方案比公认的答案更适合。谢谢
-2赞
Leon Tang
2/1/2022
#3
试试这个: 总和(IFNULL(评分, 0))
评论
2赞
General Grievance
2/2/2022
这个问题在很长一段时间内都得到了很好的回答。请编辑并解释为什么这比现有的更好。
上一个:如何在PHP中验证域名?
评论