Heim >Datenbank >MySQL-Tutorial >Wie kombiniere ich Zeilen mit NULL-Werten in SQL mithilfe von Aggregatfunktionen?

Wie kombiniere ich Zeilen mit NULL-Werten in SQL mithilfe von Aggregatfunktionen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 10:17:10903Durchsuche

How to Combine Rows with NULL Values in SQL Using Aggregate Functions?

So führen Sie Zeilen in SQL zusammen

Frage:

Stellen Sie sich ein Szenario vor, in dem Sie eine Datenbanktabelle mit den Spalten FK haben , Feld1 und Feld2. Die Tabelle besteht aus Daten wie folgt:

FK Field1 Field2
3 ABC NULL
3 NULL DEF

Sie möchten eine Abfrage durchführen, die diese beiden Zeilen zu einer kombiniert und die folgende Ausgabe erzeugt:

FK Field1 Field2
3 ABC DEF

Antwort:

Aggregatfunktionen wie MAX können verwendet werden, um diese Datenzusammenführung zu erreichen. Sie ignorieren von Natur aus NULL-Werte auf Plattformen wie SQL Server, Oracle und Jet/Access. Hier ist eine Beispielabfrage, die die MAX-Funktion verwendet:

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

In dieser Abfrage gruppieren wir die Zeilen nach der FK-Spalte und verwenden die MAX-Funktion, um den Maximalwert für jede der anderen Spalten abzurufen (Feld1 und Feld2). Da NULL-Werte ignoriert werden, werden die Nicht-NULL-Werte (ABC und DEF) in der zusammengeführten Zeile zurückgegeben.

Hier ist ein Beispiel mit 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');

Wenn die Abfrage ausgeführt wird Auf Grundlage dieser Testdaten ergibt sich die folgende Ausgabe:

FK  Field1  Field2
--  ------  ------
3   ABC     DEF
4   JKL     PQR

Das obige ist der detaillierte Inhalt vonWie kombiniere ich Zeilen mit NULL-Werten in SQL mithilfe von Aggregatfunktionen?. 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