Maison >base de données >tutoriel mysql >Comment combiner des lignes avec des valeurs NULL dans SQL à l'aide de fonctions d'agrégation ?

Comment combiner des lignes avec des valeurs NULL dans SQL à l'aide de fonctions d'agrégation ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 10:17:10906parcourir

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

Comment fusionner des lignes en SQL

Question :

Imaginez un scénario dans lequel vous avez une table de base de données avec des colonnes FK , Champ1 et Champ2. Le tableau se compose des données suivantes :

FK Field1 Field2
3 ABC NULL
3 NULL DEF

Vous souhaitez effectuer une requête qui combine ces deux lignes en une seule, produisant le résultat suivant :

FK Field1 Field2
3 ABC DEF

Réponse :

Des fonctions d'agrégation, telles que MAX, peuvent être utilisées pour réaliser cette fusion de données. Ils ignorent intrinsèquement les valeurs NULL sur des plates-formes telles que SQL Server, Oracle et Jet/Access. Voici un exemple de requête qui utilise la fonction MAX :

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

Dans cette requête, nous regroupons les lignes par colonne FK et utilisons la fonction MAX pour récupérer la valeur maximale pour chacune des autres colonnes (Field1 et Champ2). Puisque les valeurs NULL sont ignorées, les valeurs non NULL (ABC et DEF) sont renvoyées dans la ligne fusionnée.

Voici un exemple avec des données de test :

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

Lorsque la requête est exécutée sur ces données de test, il donne le résultat suivant :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn