Kopieren von Daten innerhalb einer Tabelle
In einer relationalen Datenbank ist es oft nützlich, Daten von einer Zeile in eine andere innerhalb derselben Tabelle zu kopieren. In diesem Artikel wird eine Methode zum Aktualisieren des Werts einer Zeile mithilfe von Daten aus einer anderen Zeile in derselben Tabelle untersucht.
Stellen Sie sich eine Tabelle mit der folgenden Struktur vor:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | |
4 | Test | |
1 | Test3 | VALUE3 |
Das Ziel besteht darin, den zu aktualisieren Werte für Zeilen mit fehlenden Werten in der Spalte „VALUE“, indem der Wert aus einer anderen Zeile mit demselben „NAME“ abgerufen wird. Die erwartete Ausgabe:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
Die Lösung beinhaltet einen Self-Join. Indem wir eine temporäre Tabelle verwenden, um nur die Nicht-Null-Zeilen zu speichern, können wir die Originaltabelle aktualisieren:
UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE FROM data_table WHERE VALUE IS NOT NULL AND VALUE != '') t1 SET t.VALUE = t1.VALUE WHERE t.ID = t1.ID AND t.NAME = t1.NAME
Erklärung:
Aktualisierte Abfrage:
Die bereitgestellte Lösung kann verfeinert werden, um das gewünschte Ergebnis zu erzielen Ausgabe:
UPDATE data_table dt1, data_table dt2 SET dt1.VALUE = dt2.VALUE WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
Das obige ist der detaillierte Inhalt vonWie kopiere ich Daten innerhalb einer Tabelle mithilfe von Self-Join?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!