テーブルの結合に MySQL JSON フィールドを使用する
JSON フィールドにデータを保存すると柔軟性が得られますが、データ操作を実行するときに課題も生じます。この問い合わせの目的は、ID の配列を格納する JSON フィールドを使用してテーブルを結合することです。
問題ステートメント
ユーザーは 2 つのテーブルを作成しました。 user_group、および ID のリストを保存するユーザー テーブル内の架空の user_groups JSON フィールド。ユーザーは、この JSON フィールドで操作を実行し、それを SQL で使用したいと考えています。
具体的には、ユーザーは、ユーザー ID、ユーザー名、ユーザー グループ ID、およびグループ名をリストする結果を取得しようとしています。これらの結果は、JSON フィールドに保存されている ID に基づいて結合する必要があります。
ソリューション
これを実現するには、ユーザーは 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_TABLE 関数を使用して JSON フィールドから ID の配列を抽出し、仮想テーブル。このアプローチにより、データをより柔軟に操作できるようになります。
コード
<code class="sql">SELECT u.user_id, u.user_name, uv.user_group_id ( SELECT g.group_name FROM user_group g WHERE g.user_group_id = uv.user_group_id ) AS group_name FROM user u CROSS JOIN JSON_TABLE( u.user_groups, '$[*]' COLUMNS (user_group_id INT PATH '$') ) uv</code>
説明
これらの手法を活用することで、ユーザーは JSON フィールドを効果的に利用してテーブルを結合し、MySQL で複雑なデータ操作を実行できます。
以上がJSON フィールドに保存された ID に基づいて MySQL テーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。