Aktualisieren von Zeilen mit Daten von gleichgeordneten Tabellen
Stellen Sie sich eine Tabelle mit einer Struktur vor, die dieser ähnelt:
ID | NAME | WERT |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | NULL |
4 | Test | NULL |
1 | Test3 | VALUE3 |
Ihre Aufgabe besteht darin, die NULL-„VALUE“-Zellen mit Daten aus anderen Zeilen zu füllen, die denselben „NAME“ tragen. (d. h. „Test“ und „Test2“ sollten Werte von ihren Vorgängern erben). Das gewünschte Ergebnis ist:
ID | NAME | VALUE |
---|---|---|
1 | Test | VALUE1 |
2 | Test2 | VALUE2 |
1 | Test2 | VALUE2 |
4 | Test | VALUE1 |
1 | Test3 | VALUE3 |
Die Herausforderung besteht darin, Zeilen innerhalb derselben zu referenzieren Tabelle, die einen bestimmten „NAME“-Wert gemeinsam haben. Die Lösung beinhaltet die Verwendung einer JOIN-Anweisung:
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
In dieser Anweisung extrahiert die Unterabfrage (T1) verschiedene Zeilen mit nicht NULL- und nicht leeren „VALUE“-Werten. Die Hauptabfrage (t) verknüpft dann mit dieser Unterabfrage die Felder „ID“ und „NAME“, um die zu aktualisierenden Zeilen zu identifizieren. Dadurch werden die leeren „VALUE“-Zellen mit den entsprechenden Werten aus den nicht leeren Zeilen mit demselben „NAME“-Wert gefüllt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3