Maison >base de données >tutoriel mysql >Comment les fonctions d'agrégation SQL peuvent-elles fusionner plusieurs lignes avec des valeurs NULL en une seule ligne ?
Considérez une table avec des données comme indiqué ci-dessous :
FK | Field1 | Field2 |
---|---|---|
3 | ABC | NULL |
3 | NULL | DEF |
L'objectif est d'effectuer une Opération SELECT pour combiner ces lignes en une seule ligne :
FK | Field1 | Field2 |
---|---|---|
3 | ABC | DEF |
Des fonctions d'agrégation peuvent être utilisées pour ignorer les valeurs NULL et combiner les valeurs non NULL de plusieurs lignes correspondantes. Voici une requête qui illustre cette approche :
SELECT FK, MAX(Field1) AS Field1, MAX(Field2) AS Field2 FROM table1 GROUP BY FK;
Dans cette requête, nous utilisons la fonction d'agrégation MAX pour sélectionner la valeur maximale pour Field1 et Field2 à partir des lignes regroupées par FK. Étant donné que les valeurs NULL sont ignorées par les fonctions d'agrégation, cela garantit que seules les valeurs non NULL sont combinées.
Utilisation des données de test fournies :
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');
La requête donne les résultats souhaités :
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!