使用MySQL JSON 欄位連接表
將資料儲存在JSON 欄位中可以提供彈性,但執行資料操作時也帶來了挑戰。在此查詢中,目標是使用儲存 ID 陣列的 JSON 欄位連接表。
問題陳述
使用者建立了兩個表, user 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中文網其他相關文章!