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 サイトの他の関連記事を参照してください。