Maison >base de données >tutoriel mysql >Comment joindre des tables avec des champs de valeurs séparés par des virgules dans SQL ?
Interrogation de plusieurs champs de jointure avec des valeurs séparées par des virgules
En SQL, lorsque vous traitez des tables contenant des listes séparées par des virgules (CSV) dans leurs domaines, il peut être difficile d'effectuer des jointures efficacement. Cet article explore un scénario spécifique dans lequel la colonne des catégories dans une table de films contient plusieurs ID de catégorie, et l'objectif est de l'exclure entièrement lors de la récupération des noms de catégorie correspondants à partir d'une table de catégories.
Les tableaux suivants illustrent le scénario. :
Table categories: -id- -name- 1 Action 2 Comedy 4 Drama 5 Dance Table movies: -id- -categories- 1 2,4 2 1,4 4 3,5
Pour effectuer la jointure souhaitée, nous pouvons utiliser la fonction find_in_set() en conjonction avec une opération group_concat(). Voici la requête :
select m.id, group_concat(c.name) from movies m join categories c on find_in_set(c.id, m.categories) group by m.id
Explication de la requête :
La sortie résultante affiche les ID de film ainsi que leurs noms de catégorie correspondants dans un format de tableau. Cela permet un accès facile aux catégories pertinentes sans avoir besoin de décoder le CSV dans le tableau des films.
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!