SQL устанавливает значения одного столбца равными значениям другого столбца в той же таблице


97

У меня есть таблица с двумя столбцами DATETIME.

Один из них никогда не бывает NULL, но иногда один из них равен NULL.

Мне нужно написать запрос, который установит все строки NULL для столбца B, равные значениям в столбце A.

Я пробовал этот пример, но SQL в выбранном ответе не выполняется, потому что MySQL Workbench, похоже, не любит FROM в UPDATE.

Ответы:




21

Я бы сделал это так:

UPDATE YourTable SET B = COALESCE(B, A);

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

В этом примере, если B в данной строке не является нулем, обновление не выполняется.

Если B равно нулю, COALESCE пропускает его и вместо этого использует A.


5

Я не думаю, что вы ищете другой пример. Если вы просто обновляете один столбец из другого столбца в той же таблице, вы сможете использовать что-то вроде этого.

update some_table set null_column = not_null_column where null_column is null

1

Вот пример кода, который может помочь вам скопировать столбец A в столбец B:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;

Примечание модератора - пожалуйста, не откатывайте действительные обновления вашего сообщения.
Бхаргав Рао
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.