Поле приращения обновления mysql, имеющее значение null

У меня есть очень большая таблица с двумя столбцами INT, которые по умолчанию равны нулю. Это проблема, потому что, поскольку они являются полями INT, во многих случаях было бы полезно, если бы они изначально были установлены на 0.

Итак, мои вопросы: есть ли способ ОБНОВИТЬ и УВЕЛИЧИТЬ (+1) эти поля, пока они такие (нулевые по умолчанию)? Кстати... Мне пока не повезло, кажется, приращение работает только тогда, когда значение по умолчанию = 0

..или мой единственный вариант изменить значение по умолчанию на none с нуля


person sa511    schedule 20.03.2011    source источник


Ответы (3)


UPDATE TableName SET column = IFNULL(column, 0) + 1 WHERE ...

Подробнее о IFNULL. Он возвращает первый аргумент, если он не равен NULL, и второй в противном случае.

person Charles    schedule 20.03.2011

Попробуйте установить поле как NOT NULL, чтобы избежать проблемы, чтобы значение по умолчанию 0 использовалось вместо нуля. Другой вариант - установить столбец как ноль, когда он равен нулю.

UPDATE TableName SET FieldName = '0' WHERE FieldName IS NULL

Другой альтернативой может быть выдача IFNULL. чтобы вернуть 0, если столбец имеет значение null, а затем увеличить столбец.

UPDATE TableName SET FieldName = IFNULL(FieldName,0) 
person Piyush Mattoo    schedule 20.03.2011

Стандарт SQL должен был бы использовать COALESCE(); это было доступно в MySQL с версии 3.23 (которая была выпущена в производство в 2001 году):

UPDATE mytable
   SET mycolumn = COALESCE(mycolumn, 0) + 1
 WHERE my_other_columns = ...

Я не вижу причин выбирать здесь IFNULL(), а не COALESCE().

Надеюсь это поможет.

person David Faber    schedule 01.05.2018