首頁  >  文章  >  資料庫  >  如何在 SQL 中連接具有逗號分隔值欄位的表?

如何在 SQL 中連接具有逗號分隔值欄位的表?

Susan Sarandon
Susan Sarandon原創
2024-11-10 12:06:02331瀏覽

How to Join Tables with Comma-Separated Value Fields in SQL?

使用逗號分隔值查詢多個連接欄位

在SQL 中,處理包含逗號分隔清單(CSV) 的表時在他們的領域,有效地執行連接可能具有挑戰性。本文探討了一種特定場景,其中電影表中的類別列包含多個類別 ID,目標是在從類別表中獲取相應類別名稱時將其完全排除。

下表說明了該場景:

Table categories:
-id-       -name-
1          Action
2          Comedy
4          Drama
5          Dance

Table movies:
-id-       -categories-
1          2,4
2          1,4
4          3,5

為了執行所需的連接,我們可以將 find_in_set() 函數與 group_concat() 操作結合使用。查詢如下:

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 存在於電影類別列的CSV 中表。
  • join 子句依據 find_in_set() 條件連結兩個表。
  • group_concat() 將每個電影 ID 的所有符合類別名稱連接到單一字串中。
  • group by 子句確保結果按電影 ID 分組,提供乾淨且有組織的結果輸出。

結果輸出以陣列格式顯示影片 ID 及其對應的類別名稱。這樣可以輕鬆存取相關類別,而無需解碼電影表中的 CSV。

以上是如何在 SQL 中連接具有逗號分隔值欄位的表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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