使用逗號分隔的連接欄位連接表
使用包含逗號分隔清單的表時,使用傳統方法執行連接變得具有挑戰性方法。在本例中,我們遇到兩個表,“categories”和“movies”,其中“movies”表中的“categories”列保存多個用逗號分隔的類別 ID。
實作檢索對應的類別名稱而不是「類別」欄位中的原始ID,我們可以利用以下SQL 查詢:
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 「類別」表存在於「m.categories」欄位中儲存的逗號分隔清單中。透過根據「m.categories」值迭代檢查「categories」表中的每個候選類別,查詢可以識別匹配的類別。
然後使用 group_concat() 函數將符合的類別名稱聚合到一個陣列中,將它們連接成結果集中每一行的單一字串欄位。最後,查詢以「m.id」列將結果分組,確保每個電影 ID 在輸出中僅出現一次。
因此,此查詢有效地取代了「movies」表與對應的類別名稱,有效地對具有非傳統連接欄位的表執行連接操作。
以上是如何在 SQL 中使用逗號分隔的連線欄位連接表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!