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 s'affiche les identifiants de films ainsi que leurs noms de catégories 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3