SQL define valores de uma coluna iguais aos valores de outra coluna na mesma tabela

92

Eu tenho uma tabela com duas colunas DATETIME.

Um deles nunca é NULL, mas um deles às vezes é NULL.

Preciso escrever uma consulta que definirá todas as linhas NULL da coluna B iguais aos valores da coluna A.

Eu tentei este exemplo, mas o SQL na resposta selecionada não é executado porque o MySQL Workbench não parece gostar de DE no UPDATE.

user1002358
fonte

Respostas:

154

Parece que você está trabalhando em apenas uma mesa, então algo assim:

update your_table
set B = A
where B is null
mu é muito curto
fonte
21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
Icaro
fonte
20

Eu faria assim:

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

COALESCE é uma função que retorna seu primeiro argumento não nulo.

Neste exemplo, se B em uma determinada linha não for nulo, a atualização é autônoma.

Se B for nulo, o COALESCE o ignora e usa A em seu lugar.

Bill Karwin
fonte
5

Não acho que outro exemplo seja o que você está procurando. Se você está apenas atualizando uma coluna de outra coluna na mesma tabela, você deve ser capaz de usar algo assim.

update some_table set null_column = not_null_column where null_column is null
Williams
fonte
1

Aqui está um código de amostra que pode ajudá-lo a lidar com a Coluna A para a Coluna B:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;
Waruna Manjula
fonte
Nota do moderador - Não reverta atualizações válidas para sua postagem.
Bhargav Rao