Maison > base de données > tutoriel mysql > Comment puis-je fusionner des lignes avec des valeurs NULL dans SQL sur la base d'une clé commune ?

Comment puis-je fusionner des lignes avec des valeurs NULL dans SQL sur la base d'une clé commune ?

Mary-Kate Olsen
Libérer: 2025-01-01 11:01:11
original
211 Les gens l'ont consulté

How Can I Merge Rows with NULL Values in SQL Based on a Common Key?

Comment fusionner des lignes en SQL

Problème :

Considérons une table avec les données suivantes :

FK Field1 Field2
3 ABC NULL
3 NULL DEF

L'objectif est de récupérer une ligne fusionnée du tableau, où les valeurs Field1 et Field2 sont combinées pour le même FK :

FK Field1 Field2
3 ABC DEF

Solution :

Pour obtenir ce résultat, des fonctions d'agrégation peuvent être utilisées. Les fonctions d'agrégation ignorent les valeurs NULL, permettant la fusion de valeurs non NULL. Par exemple, la requête suivante (testée dans SQL Server Express 2008 R2) peut être utilisée :

SELECT
    FK,
    MAX(Field1) AS Field1,
    MAX(Field2) AS Field2
FROM
    table1
GROUP BY
    FK;
Copier après la connexion

La fonction MAX permet de sélectionner une valeur parmi les lignes regroupées par FK. Toute fonction d'agrégation qui récupère une valeur unique dans les lignes groupées peut être utilisée.

Exemples de données et de résultats :

Considérez les exemples de données suivants :

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');
Copier après la connexion

L'exécution de la requête sur cet exemple de données donne le résultat suivant :

FK  Field1  Field2
--  ------  ------
3   ABC     DEF
4   JKL     PQR
Copier après la connexion

Ainsi, le les lignes sont effectivement fusionnées, combinant des valeurs non NULL pour le même FK dans les colonnes Field1 et Field2.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal