Maison > base de données > tutoriel mysql > Pouvez-vous joindre des tables basées sur des données stockées dans des champs JSON dans MySQL ?

Pouvez-vous joindre des tables basées sur des données stockées dans des champs JSON dans MySQL ?

Barbara Streisand
Libérer: 2024-10-31 07:54:02
original
459 Les gens l'ont consulté

Can You Join Tables Based on Data Stored in JSON Fields in MySQL?

Effectuer des jointures sur des champs JSON dans MySQL

Question :

Dans une base de données avec un Champ JSON stockant une liste d'identifiants, est-il possible d'effectuer des opérations SQL sur ce champ et de les utiliser pour se joindre à un autre table ?

Exemple :

Considérons les tableaux suivants :

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

Nous souhaitons créer une requête qui renvoie les résultats suivants :

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

Où user_groups stocke la liste [1, 3], représentant le groupe ID.

Réponse :

Oui, il est possible d'effectuer des jointures sur des champs JSON dans MySQL. Grâce à la fonction JSON_CONTAINS, nous pouvons vérifier si une valeur JSON contient une valeur spécifique :

<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

Dans cette requête, JSON_CONTAINS vérifie si le champ user_groups contient la valeur user_group_id. Si tel est le cas, il inclut la ligne dans le jeu de résultats. L'opérateur $ dans cette fonction indique qu'elle doit rechercher la valeur spécifiée n'importe où dans le tableau.

Cette technique vous permet d'effectuer des jointures sur des champs JSON et d'extraire les données pertinentes des structures imbriquées.

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