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!