Maison > base de données > tutoriel mysql > Comment puis-je regrouper des données SQL tout en gérant les valeurs NULL dans la clause « GROUP BY » ?

Comment puis-je regrouper des données SQL tout en gérant les valeurs NULL dans la clause « GROUP BY » ?

Barbara Streisand
Libérer: 2025-01-04 02:26:40
original
796 Les gens l'ont consulté

How Can I Group SQL Data While Handling NULL Values in the `GROUP BY` Clause?

Regrouper des données avec des valeurs NULL en SQL

Le regroupement de données à l'aide de la fonction GROUP BY est une technique puissante pour résumer et récupérer des données. Cependant, il est parfois souhaitable de regrouper les données en ignorant les valeurs NULL. Ceci peut être réalisé grâce à une manipulation intelligente de la clause GROUP BY.

Dans la requête donnée, GROUP BY est utilisé pour regrouper les lignes par champ ancêtre. Cependant, lorsque l'ancêtre est NULL pour plusieurs lignes, elles sont regroupées, ce qui entraîne le renvoi d'une seule ligne. Pour surmonter ce problème, nous pouvons utiliser une astuce impliquant la fonction IFNULL.

Nous pouvons modifier la requête comme suit :

SELECT `table1`.*, 
    IFNULL(ancestor,UUID()) as unq_ancestor
    GROUP_CONCAT(id SEPARATOR ',') AS `children_ids`
FROM `table1` 
WHERE (enabled = 1) 
GROUP BY unq_ancestor
Copier après la connexion

Dans cette requête révisée, nous utilisons IFNULL pour attribuer un nom unique identifiant (UUID) aux valeurs NULL dans le champ ancêtre. Cela crée une colonne unique appelée unq_ancestor qui est ensuite utilisée pour le regroupement. De ce fait, toutes les lignes, y compris celles ayant des valeurs d'ancêtre NULL, seront regroupées séparément, vous permettant de récupérer toutes les données souhaitées.

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