Ответ 1
Похоже, вы работаете только в одной таблице, так что примерно так:
update your_table
set B = A
where B is null
У меня есть таблица с двумя столбцами DATETIME.
Один из них никогда не имеет NULL, но один из них иногда имеет значение NULL.
Мне нужно написать запрос, который будет устанавливать все строки NULL для столбца B равными значениям в столбце A.
Я пробовал этот пример, но SQL в выбранном ответе не выполняется, потому что MySQL Workbench, похоже, не нравится FROM в UPDATE.
Похоже, вы работаете только в одной таблице, так что примерно так:
update your_table
set B = A
where B is null
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL
Я бы сделал это следующим образом:
UPDATE YourTable SET B = COALESCE(B, A);
COALESCE - это функция, которая возвращает свой первый ненулевой аргумент.
В этом примере, если B в заданной строке не является нулевым, обновление является no-op.
Если B равно null, COALESCE пропускает его и вместо этого использует A.
Я не думаю, что другой пример - это то, что вы ищете. Если вы просто обновляете один столбец из другого столбца в той же таблице, вы должны использовать что-то вроде этого.
update some_table set null_column = not_null_column where null_column is null
Вот пример кода, который может помочь вам скопировать столбец A в столбец B:
UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;