Maison > Article > base de données > Comment puis-je concaténer efficacement les valeurs de plusieurs lignes en une seule chaîne dans SQLite à l'aide de GROUP_CONCAT ?
Comprendre GROUP_CONCAT dans SQLite
Lorsque vous traitez des schémas de bases de données relationnelles, il est souvent nécessaire de concaténer les valeurs de plusieurs lignes d'une table en une seule chaîne. Dans SQLite, la fonction GROUP_CONCAT fournit une solution puissante pour cette tâche.
Vos données et votre objectif
Considérez les exemples de données suivants, qui représentent les auteurs associés aux résumés :
1 A 1 B 1 C 1 D 2 E 2 F 3 G 3 H 3 I 3 J 3 K
Vous souhaitez transformer ces données dans un format où chaque identifiant abstrait unique (_id) est associé à une liste séparée par des virgules des noms d'auteurs correspondants, comme ceci :
1 A,B,C,D 2 E,F
Utilisation de GROUP_CONCAT avec des fonctions d'agrégation
La fonction GROUP_CONCAT, combinée avec des fonctions d'agrégation et une clause GROUP BY, peut réaliser cet objectif. Une approche courante consiste à créer une table intermédiaire à l’aide d’une sous-requête, comme vous l’avez initialement tenté. Cependant, vous avez manqué une étape cruciale.
La bonne approche
Pour utiliser correctement GROUP_CONCAT, effectuez les étapes suivantes :
Requête corrigée
Voici une requête corrigée qui suit ces principes :
SELECT ABSTRACTS_ITEM._id, GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) AS GroupedName FROM ABSTRACTS_ITEM JOIN AUTHORS_ABSTRACT ON ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID JOIN ABSTRACT_AUTHOR ON ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID GROUP BY ABSTRACTS_ITEM._id;
Requête alternative
Vous pouvez également utiliser l'approche de sous-requête comme vous l'avez initialement tenté, mais avec la syntaxe correcte :
SELECT ID, GROUP_CONCAT(NAME) FROM (select ABSTRACTS_ITEM._id AS ID, Name from ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT where ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID and ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID) GROUP BY ID;
Les deux requêtes concatèneront avec succès les noms d'auteur pour chaque ID de résumé, fournissant le format de sortie souhaité.
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!