Heim >Datenbank >MySQL-Tutorial >Wie können SQL-Aggregatfunktionen mehrere Zeilen mit NULL-Werten in einer einzigen Zeile zusammenführen?

Wie können SQL-Aggregatfunktionen mehrere Zeilen mit NULL-Werten in einer einzigen Zeile zusammenführen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-28 06:12:14537Durchsuche

How Can SQL Aggregate Functions Merge Multiple Rows with NULL Values into a Single Row?

Auswählen von Daten zum Zusammenführen mehrerer Zeilen in SQL

Betrachten Sie eine Tabelle mit Daten wie unten gezeigt:

FK Field1 Field2
3 ABC NULL
3 NULL DEF

Das Ziel besteht darin, eine durchzuführen SELECT-Operation, um diese Zeilen zu einer einzigen Zeile zu kombinieren:

FK Field1 Field2
3 ABC DEF

Aggregatfunktion Lösung

Aggregatfunktionen können verwendet werden, um NULL-Werte zu ignorieren und die Nicht-NULL-Werte aus mehreren übereinstimmenden Zeilen zu kombinieren. Hier ist eine Abfrage, die diesen Ansatz veranschaulicht:

SELECT
    FK,
    MAX(Field1) AS Field1,
    MAX(Field2) AS Field2
FROM
    table1
GROUP BY
    FK;

In dieser Abfrage verwenden wir die Aggregatfunktion MAX, um den Maximalwert für Feld1 und Feld2 aus den nach FK gruppierten Zeilen auszuwählen. Da NULL-Werte von Aggregatfunktionen ignoriert werden, wird sichergestellt, dass nur Nicht-NULL-Werte kombiniert werden.

Testen der Lösung

Verwendung der bereitgestellten Testdaten:

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');

Die Abfrage liefert die gewünschten Ergebnisse:

FK Field1 Field2
3 ABC DEF
4 JKL PQR

Das obige ist der detaillierte Inhalt vonWie können SQL-Aggregatfunktionen mehrere Zeilen mit NULL-Werten in einer einzigen Zeile zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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