テーブル結合に MySQL JSON フィールドを使用する
データベース管理では、包括的な洞察を得るために複数のテーブルのデータを結合することが必要になることがよくあります。 MySQL を使用している場合、JSON フィールドに識別子のリストが格納されている状況が発生することがあります。この投稿では、そのような JSON フィールドで操作を実行し、SQL クエリでそれらを利用することが可能かどうかという問題を取り上げます。
問題
次の架空のシナリオを考えてみましょう。ユーザー ID、ユーザー名、およびグループ ID のリストを格納する「user_groups」という JSON フィールドの列を含む「user」テーブルがあります。グループ ID とグループ名の列を含む「user_group」テーブルもあります。目標は、ユーザーとそのそれぞれのグループに関する情報を取得するクエリを構築し、次の構造のテーブルを作成することです:
user_id | user_name | user_group_id | group_name
望ましい結果は次のようになります:
101 | John | 1 | Group A 101 | John | 3 | Group C
解決策
望ましい結果を達成するには、次のクエリを使用できます。
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), '$')
「JSON_CONTAINS」関数を使用して、ユーザー グループ ID がユーザー グループ ID であるかどうかを判断します。 JSON フィールド「user_groups」に存在します。この機能を利用すると、JSONフィールドのグループIDの有無に基づいて「user」テーブルと「user_group」テーブルを結合できます。これにより、ユーザーとその関連グループに関する情報を取得できるようになります。
以上がMySQL JSON フィールドをテーブル結合に使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。