ホームページ > データベース > mysql チュートリアル > MySQL の JSON フィールドに格納されたデータに基づいてテーブルを結合できますか?

MySQL の JSON フィールドに格納されたデータに基づいてテーブルを結合できますか?

Barbara Streisand
リリース: 2024-10-31 07:54:02
オリジナル
451 人が閲覧しました

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

MySQL の JSON フィールドでの結合の実行

質問:

ID のリストを格納する JSON フィールド。このフィールドで SQL 操作を実行し、それらを使用して別のテーブルと結合することは可能ですか?

例:

次のことを考えてください。テーブル:

<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>
ログイン後にコピー

次の結果を返すクエリを作成したいとします:

user_id | user_name | user_group_id | group_name|
-------------------------------------------------
101     | John      | 1             | Group A
101     | John      | 3             | Group C
ログイン後にコピー

user_groups には、グループ ID を表すリスト [1, 3] が格納されます。

答え:

はい、MySQL の JSON フィールドで結合を実行できます。 JSON_CONTAINS 関数を使用すると、JSON 値に特定の値が含まれているかどうかを確認できます。

<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>
ログイン後にコピー

このクエリでは、JSON_CONTAINS は user_groups フィールドに user_group_id 値が含まれているかどうかを確認します。存在する場合、その行は結果セットに含まれます。この関数の $ 演算子は、配列内の任意の場所で指定された値を検索する必要があることを示します。

この手法を使用すると、JSON フィールドで結合を実行し、ネストされた構造から関連データを抽出できます。

以上がMySQL の JSON フィールドに格納されたデータに基づいてテーブルを結合できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート