SQL устанавливает значения одного столбца равными значениям другого столбца в той же таблице - PullRequest
71 голосов
/ 19 октября 2011

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

Один из них никогда не NULL, но иногда иногда NULL.

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

Я пробовал в этом примере , но SQL в выбранном ответе не выполняется, потому что MySQL Workbench, похоже, не нравитсяОТ ОБНОВЛЕНИЯ.

Ответы [ 5 ]

123 голосов
/ 19 октября 2011

Звучит так, будто вы работаете только за одним столом, и примерно так:

update your_table
set B = A
where B is null
16 голосов
/ 19 октября 2011
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
13 голосов
/ 19 октября 2011

Я бы сделал это следующим образом:

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

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

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

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

4 голосов
/ 19 октября 2011

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

update some_table set null_column = not_null_column where null_column is null
0 голосов
/ 25 октября 2016

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

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...