首頁 >資料庫 >mysql教程 >如何使用逗號分隔的連線欄位連線表:SQL 解決方案?

如何使用逗號分隔的連線欄位連線表:SQL 解決方案?

Linda Hamilton
Linda Hamilton原創
2024-11-21 06:34:16259瀏覽

How to Join Tables with Comma-Separated Join Fields: A SQL Solution?

使用逗號分隔的聯接字段聯接表

整合多個表中的資料時,可能需要對包含以下內容的欄位執行聯接以逗號分隔的清單。這可能對傳統的連接方法構成挑戰。考慮以下場景:

場景:

有兩個表、類別和影片。類別表包含具有唯一 ID 和名稱的類別。電影表包含一個類別列,該列將多個類別 ID 儲存為逗號分隔的清單。任務是連接這些表,從電影表中排除類別列,而是從類別表中選擇匹配的類別名稱到陣列中。

解決方案:

為了克服這個挑戰,可以採用對標準連接語法的修改:

select
    m.id,
    group_concat(c.name)
from
    movies m
    join categories c on find_in_set(c.id, m.categories)
group by
    m.id

在此查詢中,在連接條件中使用find_in_set() 函數。此函數檢查類別表中的類別 ID 是否存在於電影表中以逗號分隔的類別 ID 清單中。

group_concat() 函數在 SELECT 子句中用來連接所有符合的類別名稱到一個陣列中。 group by 子句確保資料按電影 ID 分組,為每部電影及其關聯的類別名稱產生一行。

示例:

考慮示例問題中提供:

表類別:

id name
1 Action
2 Comedy
4 Drama
5 Dance

表電影:

id categories
1 2,4
2 1,4
4 3,5

運行修改後的連接查詢將產生以下輸出:

表輸出:

id categories
1 Comedy,Drama
2 Action,Drama
4 Other,Dance

在此結果中,電影表中的類別列已被排除,並且相應的類別表中的類別名稱已被選擇到每部電影的數組中。

以上是如何使用逗號分隔的連線欄位連線表:SQL 解決方案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn