Kopieren von Daten zwischen Zeilen in einer Tabelle
Bei der Datenbankverwaltung ist es häufig erforderlich, Zeilen basierend auf Daten aus anderen Zeilen innerhalb der Tabelle zu aktualisieren gleichen Tisch. Stellen Sie sich eine Tabelle mit den Spalten ID, NAME und VALUE vor, die doppelte NAME-Werte enthält, wie folgt:
ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | | 4 | Test | | 1 | Test3 | VALUE3 |
Angenommen, wir möchten die leeren VALUE-Felder in Zeilen mit doppelten NAME-Werten aktualisieren. Um dies zu erreichen, können wir SQL-Abfragen verwenden, die Werte innerhalb derselben Tabelle referenzieren und aktualisieren.
Ein Ansatz besteht darin, eine UPDATE-Anweisung mit einem Join zu verwenden. In der folgenden Abfrage verknüpfen wir die Datentabelle zweimal und geben ihnen den Alias dt1 und dt2:
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 identifiziert und aktualisiert die leeren VALUE-Felder (wobei dt1.VALUE leer ist) mit nicht leeren Feldern WERTE aus anderen Zeilen mit demselben NAMEN (wobei dt2.VALUE nicht leer ist).
Alternativ können wir eine Unterabfrage verwenden, um die Zeilen mit nicht leeren WERTEN zu identifizieren und sie wieder mit der Originaltabelle zu verbinden zum 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
Beide Abfragen führen zur gewünschten Ausgabe:
ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | VALUE2 | 4 | Test | VALUE1 | 1 | Test3 | VALUE3 |
Diese Ansätze bieten Flexibilität bei der Bearbeitung von Daten innerhalb einer Tabelle und ermöglichen Ihnen die Aktualisierung von Werten basierend auf Kriterien, die andere Zeilen in derselben Tabelle einschließen.
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