Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich Tabellenzeilenwerte aus übereinstimmenden Zeilen in derselben Tabelle?

Wie aktualisiere ich Tabellenzeilenwerte aus übereinstimmenden Zeilen in derselben Tabelle?

Linda Hamilton
Linda HamiltonOriginal
2024-11-18 01:38:02500Durchsuche

How to Update Table Row Values from Matching Rows in the Same Table?

Tabellenzeilenwerte aus übereinstimmenden Zeilen in derselben Tabelle aktualisieren

In einer Situation, in der eine Tabelle nicht eindeutige IDs und zusammengesetzte Schlüssel enthält, die für erforderlich sind Bei der Eindeutigkeit von Zeilen kann das Aktualisieren von Zeilenwerten mithilfe von Daten aus anderen Zeilen innerhalb derselben Tabelle eine Herausforderung darstellen. Stellen Sie sich das folgende Szenario vor:

Gegeben ist eine Tabelle mit den folgenden Daten:

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2
4 Test
1 Test3 VALUE3

Das Ziel besteht darin, die Werte für „Test2“ und „Test“ mit Daten aus anderen Zeilen mit zu aktualisieren gleicher „NAME“ (die ID ist zur Zeilenidentifizierung nicht eindeutig). Die erwartete Ausgabe sollte wie folgt aussehen:

ID NAME VALUE
1 Test VALUE1
2 Test2 VALUE2
1 Test2 VALUE2
4 Test VALUE1
1 Test3 VALUE3

Um dieser Herausforderung zu begegnen, können Sie die folgende Abfrage nutzen:

UPDATE data_table dt1, data_table dt2
SET dt1.VALUE = dt2.VALUE
WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''

Diese Abfrage basiert auf zwei Instanzen derselben Tabelle (data_table mit dem Alias). dt1 und dt2), um Daten zu vergleichen und Zeilen zu identifizieren, die für Aktualisierungen in Frage kommen:

  • Die WHERE-Klausel filtert nach Zeilen, in denen dt1.NAME stimmt mit dt2.NAME überein und zeigt Zeilen mit demselben „NAME“-Wert an.
  • Es wird auch nach Zeilen gesucht, in denen dt1.VALUE leer ist (''), was auf Datensätze hinweist, die aktualisiert werden müssen.
  • Schließlich ist dt2.VALUE nicht leer, wodurch sichergestellt wird, dass Aktualisierungen nur aus Zeilen mit gültigen Werten erfolgen.

Als Ergebnis Die Abfrage aktualisiert die Werte in dt1 mit übereinstimmenden Daten aus dt2 und füllt so effektiv leere Zellen in Zeilen auf, in denen „NAME“ übereinstimmt. Dieser Ansatz ermöglicht nahtlose Zeilenwertaktualisierungen innerhalb derselben Tabelle und löst so die anfängliche Herausforderung.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich Tabellenzeilenwerte aus übereinstimmenden Zeilen in derselben Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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