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.

Antworten:


152

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

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

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.


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

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;

Moderator Hinweis - Bitte setzen Sie keine gültigen Updates für Ihren Beitrag zurück.
Bhargav Rao
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.