首頁 >資料庫 >mysql教程 >如何在 SQL 中連接具有逗號分隔值的表?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-14 04:32:14986瀏覽

How to Join Tables with Comma-Separated Values in SQL?

用逗號分隔值連接兩個表

問題:

我們有兩個表:註釋和立場。 Notes 資料表包含一個名為「forDepts」的資料列,用於儲存以逗號分隔的部門 ID。我們需要連接這些表,並將「forDepts」值與 Positions 表中對應的部門名稱相關聯。

所需輸出:

nid DepartmentName
1 Executive, Corp Admin, Art
2 Art, Marketing

解:

由於資料庫結構無法修改,所以我們將使用以下SQL查詢以獲得所需的輸出:

SELECT  a.nid,
        GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName
FROM    Notes a
        INNER JOIN Positions b
            ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP   BY a.nid

解釋:

  • GROUP_CONCAT函數用於連接 Positions 表中的「name」列值對於 Notes 表中的每一行。
  • ORDER BY 子句確保部門名稱有序
  • FIND_IN_SET 函數檢查 Positions 表中的部門 ID 是否存在於 Notes 表的「forDepts」欄位中。如果是,則相應的行將包含在聯接中。
  • GROUP BY 子句按 Notes 表中的「nid」欄位對結果分組,有效組合與每個註解關聯的所有部門名稱。

透過執行此查詢,我們可以獲得所需的輸出,其中 Notes 表中的 'forDepts' 列值被替換為相應的以逗號分隔的部門名稱從職位表中。這將有助於使用提供的 PHP 程式碼將資料匯出到 Excel 檔案。

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

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