Maison >base de données >tutoriel mysql >Les champs MySQL JSON peuvent-ils être utilisés pour la jointure de tables ?

Les champs MySQL JSON peuvent-ils être utilisés pour la jointure de tables ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-31 23:51:28211parcourir

 Can MySQL JSON Fields Be Used for Table Joining?

Utilisation du champ MySQL JSON pour la jointure de tables

Dans la gestion de bases de données, il est souvent nécessaire de joindre les données de plusieurs tables pour obtenir des informations complètes. Lorsque vous travaillez avec MySQL, vous pouvez rencontrer des situations dans lesquelles un champ JSON stocke une liste d'identifiants. Cet article aborde la question de savoir s'il est possible d'exécuter des opérations sur de tels champs JSON et de les utiliser dans des requêtes SQL.

Le problème

Considérez le scénario fictif suivant : Vous disposez d'une table "user" avec des colonnes pour l'ID utilisateur, le nom d'utilisateur et un champ JSON appelé "user_groups" qui stocke une liste d'ID de groupe. Il existe également une table "user_group" avec des colonnes pour l'ID de groupe et le nom du groupe. Le but est de construire une requête qui récupère des informations sur les utilisateurs et leurs groupes respectifs, aboutissant à un tableau avec la structure suivante :

user_id | user_name | user_group_id | group_name

Les résultats souhaités seraient :

101     | John      | 1             | Group A
101     | John      | 3             | Group C

La solution

Pour obtenir les résultats souhaités, vous pouvez utiliser la requête suivante :

SELECT 
       u.user_id, 
       u.user_name, 
       g.user_group_id,
       g.group_name
   FROM user u
   LEFT JOIN user_group g on JSON_CONTAINS(u.user_groups, CAST(g.user_group_id as JSON), '$')

La fonction "JSON_CONTAINS" est utilisée pour déterminer si un ID de groupe d'utilisateurs existe dans le champ JSON « user_groups ». En utilisant cette fonction, vous pouvez joindre les tables « user » et « user_group » en fonction de la présence d'ID de groupe dans le champ JSON. Cela permet de récupérer des informations sur les utilisateurs et leurs groupes associés.

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!

Déclaration:
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