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.

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

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

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.


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

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;

Nota do moderador - Não reverta atualizações válidas para sua postagem.
Bhargav Rao
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.