Подтвердить что ты не робот

Как установить 0 с помощью функции MAX, когда она равна NULL?

Я хотел бы понять, как установить значение 0 атрибута, когда он равен NULL с функцией MAX. Например:

Name columns:
number - date

Values:
10 - 2012-04-04
11 - 2012-04-04
12 - 2012-04-04
13 - 2012-04-15
14 - 2012-06-21
 1 - 2013-07-04

Число - это инкрементное поле, но оно установило 1, когда наступил новый год. Но результат:

SELECT (MAX(number)+1) number WHERE date LIKE "2014%" 

- NULL, а не 1, потому что MAX (число) NULL, а не 0

4b9b3361

Ответ 1

Ну, так как нет такой даты, как 2014, вы ожидали бы нуль, потому что максимум ничего на самом деле не имеет значения.

Но сделайте следующее:

COALESCE(MAX(number),0)

Что означает: получить первую ненулевую вещь из следующего списка, поэтому, если ваш max имеет значение null, он даст вам 0

Ответ 2

COALESCE работает, но IFNULL кажется мне более ясным.

IFNULL(MAX(number), 0)

Если первое выражение не является NULL, IFNULL() возвращает само выражение, в противном случае он возвращает второй параметр. IFNULL() возвращает числовое или строковое значение в зависимости от контекста, в котором он используется.