首頁 >資料庫 >mysql教程 >如何使用 SQL 連接兩個以逗號分隔值的表?

如何使用 SQL 連接兩個以逗號分隔值的表?

Patricia Arquette
Patricia Arquette原創
2024-12-18 11:17:10979瀏覽

How to Join Two Tables with Comma-Separated Values Using SQL?

用逗號分隔值連接兩個表

問題陳述

資料庫規範化可以大大增強資料管理,但有時結構性限制阻礙了實施。本問題探討了一種在無法進行標準化時將一個表中的逗號分隔值與第二個表中的值關聯起來的方法。

在提供的場景中,我們的目標是將Notes 表的「forDepts」欄位中的值與Positions 表中對應的名稱組合起來。預期輸出是註釋 ID ('nid') 列表,其中關聯的部門名稱以逗號連接並分隔。

要實現此目的,我們可以利用 FIND_IN_SET() 函數和 GROUP_CONCAT() 函數。以下是 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

說明

  • FIND_IN_SET() 函數檢查值是否存在於以逗號分隔的字串中。在本例中,我們使用它來確定是否在「forDepts」欄位中找到 Positions 表中的部門 ID。
  • INNER JOIN 子句確保僅組合兩個表中的符合行。
  • GROUP_CONCAT() 函數連接匹配部門的名稱,按 ID 排序,並用逗號。

附加註解

提供的 PHP 程式碼似乎只輸出「forDepts」欄位中的第一個值。這可能是由於查詢中使用了 LEFT JOIN。若要檢索所有值,請考慮使用 INNER JOIN。

此方法適用於資料以逗號分隔格式儲存並且需要將其與其他值關聯而無需重構資料庫的情況。

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

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