Как я могу сделать запрос MySQL SUM возвращать ноль вместо нуля, если нет записей? - PullRequest
24 голосов
/ 23 августа 2009

Вот мой запрос на выборку:

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

, который в основном подсчитывает рейтинг элемента за последнюю неделю (604800 - это количество секунд в 1 неделе).в том случае, если в таблице нет строк, this_week будет возвращен как NULL.Я бы хотел, чтобы запрос возвращал 0, если в таблице нет строк.Как это сделать?

Ответы [ 2 ]

50 голосов
/ 23 августа 2009

Это должно сработать:

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

COALESCE - это функция, которая возвращает первое ненулевое значение из списка.

10 голосов
/ 23 августа 2009

Не можете ли вы использовать ISNULL(SUM(rating), 0)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...