Problem:
Betrachten Sie eine Tabelle mit den folgenden Daten:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | NULL |
3 | NULL | DEF |
Das Ziel besteht darin, eine zusammengeführte Zeile aus der Tabelle abzurufen, in der die Werte von Feld1 und Feld2 für denselben Wert kombiniert werden FK:
FK | Field1 | Field2 |
---|---|---|
3 | ABC | DEF |
Lösung:
Um dieses Ergebnis zu erreichen, können Aggregatfunktionen eingesetzt werden. Aggregatfunktionen ignorieren NULL-Werte und ermöglichen die Zusammenführung von Nicht-NULL-Werten. Beispielsweise kann die folgende Abfrage (getestet in SQL Server Express 2008 R2) verwendet werden:
SELECT FK, MAX(Field1) AS Field1, MAX(Field2) AS Field2 FROM table1 GROUP BY FK;
Die MAX-Funktion wird verwendet, um einen Wert aus den nach FK gruppierten Zeilen auszuwählen. Es kann jede Aggregatfunktion verwendet werden, die einen einzelnen Wert innerhalb der gruppierten Zeilen abruft.
Beispieldaten und -ergebnisse:
Beachten Sie die folgenden Beispieldaten:
CREATE TABLE table1 (FK int, Field1 varchar(10), Field2 varchar(10)); INSERT INTO table1 VALUES (3, 'ABC', NULL); INSERT INTO table1 VALUES (3, NULL, 'DEF'); INSERT INTO table1 VALUES (4, 'GHI', NULL); INSERT INTO table1 VALUES (4, 'JKL', 'MNO'); INSERT INTO table1 VALUES (4, NULL, 'PQR');
Das Ausführen der Abfrage für diese Beispieldaten ergibt die folgende Ausgabe:
FK Field1 Field2 -- ------ ------ 3 ABC DEF 4 JKL PQR
Somit die Zeilen werden effektiv zusammengeführt, indem Nicht-NULL-Werte für denselben FK in den Spalten Field1 und Field2 kombiniert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen mit NULL-Werten in SQL basierend auf einem gemeinsamen Schlüssel zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!