Как я могу сделать запрос MySQL SUM возвращать ноль вместо нуля, если нет записей?
Вот мой запрос:
SELECT SUM(rating) AS this_week
FROM table_name
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
Что в основном учитывает рейтинг элемента за последнюю неделю (604800 - это количество секунд в 1 неделю).
Проблема заключается в том, что, когда в таблице нет строк, this_week будет возвращен как NULL. Я хочу, чтобы запрос возвращал 0, если в таблице нет строк. Как это сделать?
Ответы
Ответ 1
Это должно сделать трюк:
SELECT COALESCE(SUM(rating),0) AS this_week FROM table_name
WHERE UNIX_TIMESTAMP(created_at) >= UNIX_TIMESTAMP() - 604800)
COALESCE - это функция, которая вернет первое значение, отличное от NULL, из списка.
Ответ 2
Вы не можете использовать ISNULL(SUM(rating), 0)
?