使用逗號分隔的聯接字段聯接表
整合多個表中的資料時,可能需要對包含以下內容的欄位執行聯接以逗號分隔的清單。這可能對傳統的連接方法構成挑戰。考慮以下場景:
場景:
有兩個表、類別和影片。類別表包含具有唯一 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中文網其他相關文章!