Heim > Datenbank > MySQL-Tutorial > Wie kopiere ich Daten innerhalb einer Tabelle mithilfe von Self-Join?

Wie kopiere ich Daten innerhalb einer Tabelle mithilfe von Self-Join?

Linda Hamilton
Freigeben: 2024-11-20 11:29:02
Original
877 Leute haben es durchsucht

How to Copy Data Within a Table Using Self-Join?

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
Nach dem Login kopieren

Erklärung:

  • Die Unterabfrage (SELECT DISTINCT ID, NAME, VALUE... ) erstellt eine temporäre Tabelle t1 mit nur den Nicht-Null-Zeilen.
  • Die Die UPDATE-Anweisung verknüpft dann t mit t1 in den Spalten ID und NAME.
  • Wenn die Werte übereinstimmen und die VALUE-Spalte in t null ist, wird sie mit dem entsprechenden VALUE aus t1 aktualisiert.

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 != '' 
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage