SQL-Set-Werte einer Spalte entsprechen den Werten einer anderen Spalte in derselben Tabelle

92

Ich habe eine Tabelle mit zwei DATETIME-Spalten.

Einer von ihnen ist niemals NULL, aber einer von ihnen ist manchmal NULL.

Ich muss eine Abfrage schreiben, die alle NULL-Zeilen für Spalte B auf die Werte in Spalte A setzt.

Ich habe dieses Beispiel ausprobiert, aber das SQL in der ausgewählten Antwort wird nicht ausgeführt, da MySQL Workbench das FROM im UPDATE nicht zu mögen scheint.

user1002358
quelle

Antworten:

152

Klingt so, als würden Sie nur an einem Tisch arbeiten.

update your_table
set B = A
where B is null
mu ist zu kurz
quelle
21
UPDATE YourTable
SET ColumnB=ColumnA
WHERE
ColumnB IS NULL 
AND ColumnA IS NOT NULL
Ikarus
quelle
20

Ich würde es so machen:

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

COALESCE ist eine Funktion, die ihr erstes Nicht-Null-Argument zurückgibt.

Wenn in diesem Beispiel B in einer bestimmten Zeile nicht null ist, ist die Aktualisierung ein No-Op.

Wenn B null ist, überspringt COALESCE es und verwendet stattdessen A.

Bill Karwin
quelle
5

Ich glaube nicht, dass Sie nach einem anderen Beispiel suchen. Wenn Sie nur eine Spalte aus einer anderen Spalte in derselben Tabelle aktualisieren, sollten Sie in der Lage sein, so etwas zu verwenden.

update some_table set null_column = not_null_column where null_column is null
rwilliams
quelle
1

Hier ist ein Beispielcode, der Ihnen beim Kopieren von Spalte A nach Spalte B helfen kann:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;
Waruna Manjula
quelle
Moderator Hinweis - Bitte setzen Sie keine gültigen Updates für Ihren Beitrag zurück.
Bhargav Rao