如果没有记录,如何使MySQL SUM查询返回零而不是null?

时间:2009-08-23 14:02:56

标签: sql mysql

这是我的选择查询:

SELECT SUM(rating) AS this_week 
FROM table_name 
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)

基本上计算上周项目的评分(604800是1周内的秒数)。

问题是当表中没有行时,this_week将返回NULL。我希望查询返回0,以防表中没有行。怎么做?

2 个答案:

答案 0 :(得分:50)

这应该可以解决问题:

SELECT COALESCE(SUM(rating),0) AS this_week FROM table_name 
  WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)

COALESCE是一个函数,它将从列表中返回第一个非NULL值。

答案 1 :(得分:10)

你不能使用ISNULL(SUM(rating), 0)吗?