Maison >base de données >tutoriel mysql >Comment combiner des lignes avec des valeurs NULL dans SQL à l'aide de fonctions d'agrégation ?
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!