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

97

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

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

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

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

user1002358
источник

Ответы:

159

Похоже, вы работаете только с одной таблицей, примерно так:

update your_table
set B = A
where B is null
mu слишком короткий
источник
21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
Икар
источник
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
Rwilliams
источник
1

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

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;
Варуна Манджула
источник
Примечание модератора - пожалуйста, не откатывайте действительные обновления вашего сообщения.
Бхаргав Рао