SQL imposta i valori di una colonna uguali ai valori di un'altra colonna nella stessa tabella


94

Ho una tabella con due colonne DATETIME.

Uno di loro non è mai NULL, ma a volte uno di loro è NULL.

Ho bisogno di scrivere una query che imposterà tutte le righe NULL per la colonna B uguali ai valori nella colonna A.

Ho provato questo esempio ma l'SQL nella risposta selezionata non viene eseguito perché MySQL Workbench non sembra gradire il FROM in UPDATE.

Risposte:


156

Sembra che tu stia lavorando in un solo tavolo, quindi qualcosa del genere:

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

Lo farei in questo modo:

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

COALESCE è una funzione che restituisce il suo primo argomento non nullo.

In questo esempio, se B su una determinata riga non è nullo, l'aggiornamento è un no-op.

Se B è nullo, COALESCE lo salta e utilizza invece A.


5

Non credo che questo altro esempio sia quello che stai cercando. Se stai aggiornando solo una colonna da un'altra colonna nella stessa tabella, dovresti essere in grado di usare qualcosa di simile.

update some_table set null_column = not_null_column where null_column is null

1

Ecco un esempio di codice che potrebbe aiutarti a copiare la colonna A dalla colonna B:

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

Nota del moderatore : non ripristinare gli aggiornamenti validi al tuo post.
Bhargav Rao
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.