Heim > Datenbank > MySQL-Tutorial > 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?

Barbara Streisand
Freigeben: 2024-11-13 05:51:02
Original
321 Leute haben es durchsucht

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

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

Diese Abfrage identifiziert und aktualisiert die leeren VALUE-Felder (wobei dt1.VALUE leer ist) mit nicht leeren VALUEs von andere Zeilen mit demselben NAMEN (wobei dt2.VALUE nicht leer ist).

Alternativ können wir eine Unterabfrage verwenden, um die Zeilen mit nicht leeren VALUEs zu identifizieren und sie zur Aktualisierung wieder mit der Originaltabelle zu verbinden :

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

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

Diese Ansätze bieten Flexibilität bei der Bearbeitung von Daten innerhalb einer Tabelle und ermöglichen es Ihnen, Werte basierend auf Kriterien zu aktualisieren Fügen Sie andere Zeilen in dieselbe Tabelle ein.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich leere Werte in einer Tabelle basierend auf Daten aus anderen Zeilen mit demselben Namen?. 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