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

Ric*_*nop 28 mysql sql

这是我的选择查询:

SELECT SUM(rating) AS this_week 
FROM table_name 
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
Run Code Online (Sandbox Code Playgroud)

这基本上计算了上周的项目评级(604800是1周内的秒数).

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

Jim*_*nke 54

这应该做的伎俩:

SELECT COALESCE(SUM(rating),0) AS this_week FROM table_name 
  WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
Run Code Online (Sandbox Code Playgroud)

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


CMe*_*rat 11

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

  • 我认为你的意思是'IFNULL`用于MySQL. (11认同)