„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie aktualisiere ich leere Werte in einer Tabelle basierend auf Daten aus anderen Zeilen mit demselben Namen?

Wie aktualisiere ich leere Werte in einer Tabelle basierend auf Daten aus anderen Zeilen mit demselben Namen?

Veröffentlicht am 16.11.2024
Durchsuche:104

How do I update empty values in a table based on data from other rows with the same name?

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.

Neuestes Tutorial Mehr>

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