」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 SQL 中連接具有逗號分隔值欄位的表?

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

發佈於2024-11-16
瀏覽:222

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() 檢查字串中是否存在指定的子字串,在本例中,如果來自類別表存在於電影表中類別列的CSV 中。
  • join 子句根據 find_in_set() 條件連結兩個表。
  • group_concat() 連接所有符合的類別將每個電影 ID 的名稱轉換為單一字串。
  • group by 子句確保結果按電影 ID 分組,從而提供乾淨且有組織的輸出。

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3