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
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!