可以根據 MySQL 中 JSON 欄位中儲存的資料連接表嗎?

Barbara Streisand
發布: 2024-10-31 07:54:02
原創
389 人瀏覽過

Can You Join Tables Based on Data Stored in JSON Fields in MySQL?

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!