Maison  >  Article  >  base de données  >  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
Barbara Streisandoriginal
2024-10-31 07:54:02389parcourir

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>

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

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>

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!

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