这是我的选择查询:
SELECT SUM(rating) AS this_week
FROM table_name
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
基本上计算上周项目的评分(604800是1周内的秒数)。
问题是当表中没有行时,this_week将返回NULL。我希望查询返回0,以防表中没有行。怎么做?
答案 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)
吗?