在MySQL 中對JSON 欄位執行聯結
問題:
在一個資料庫中JSON 欄位儲存ID 列表,是否可以對此欄位執行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儲存清單[1, 3],代表群組ID。
答案:
是的,可以在 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中文網其他相關文章!