Maison > base de données > tutoriel mysql > Comment joindre des tables MySQL en fonction des données d'un champ JSON ?

Comment joindre des tables MySQL en fonction des données d'un champ JSON ?

Barbara Streisand
Libérer: 2024-10-30 15:04:03
original
528 Les gens l'ont consulté

How can you join MySQL tables based on data within a JSON field?

Utilisation du champ MySQL JSON pour les jointures de tables complexes

Problème :

Dans une base de données MySQL schéma, un champ JSON stocke une liste d’ID. Le but est d'effectuer des opérations sur ce champ JSON et d'utiliser les résultats dans une requête SQL pour joindre la table utilisateur à une table de groupe d'utilisateurs.

Exemple de scénario :

Considérez les tableaux suivants :

CREATE TABLE user (
    user_id INT,
    user_name VARCHAR(50),
    user_groups JSON
);

CREATE TABLE user_group (
    user_group_id INT,
    group_name VARCHAR(50)
);
Copier après la connexion

Avec les données suivantes :

INSERT INTO user_group (user_group_id, group_name) VALUES (1, 'Group A');
INSERT INTO user_group (user_group_id, group_name) VALUES (2, 'Group B');
INSERT INTO user_group (user_group_id, group_name) VALUES (3, 'Group C');

INSERT INTO user (user_id, user_name, user_groups) VALUES (101, 'John', '[1,3]');
Copier après la connexion

Résultat souhaité :

Le résultat souhaité est une requête qui récupère les données suivantes :

user_id | user_name | user_group_id | group_name|
-------------------------------------------------
101     | John      | 1             | Group A
101     | John      | 3             | Group C
Copier après la connexion

Solution :

La solution consiste à utiliser la fonction JSON_CONTAINS pour vérifier si l'ID du groupe d'utilisateurs existe dans le champ JSON de l'utilisateur table.

<code class="sql">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), '$')</code>
Copier après la connexion

Remarque :

L'opérateur $ dans la fonction JSON_CONTAINS représente la racine du document JSON.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal