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 ?

Comment les fonctions d'agrégation SQL peuvent-elles fusionner plusieurs lignes avec des valeurs NULL en une seule ligne ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 06:12:14537parcourir

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

Sélection de données pour fusionner plusieurs lignes dans SQL

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

Fonction d'agrégation Solution

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.

Test de la solution

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!

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