首頁  >  文章  >  資料庫  >  如何使用 GROUP_CONCAT 在 SQLite 中有效地將多行中的值連接成單一字串?

如何使用 GROUP_CONCAT 在 SQLite 中有效地將多行中的值連接成單一字串?

Susan Sarandon
Susan Sarandon原創
2024-11-04 18:57:011038瀏覽

How can I efficiently concatenate values from multiple rows into a single string in SQLite using GROUP_CONCAT?

理解SQLite 中的GROUP_CONCAT

處理關係資料庫模式時,通常需要將表格中多行的值連接到單一表格中細繩。在 SQLite 中,GROUP_CONCAT 函數為此任務提供了強大的解決方案。

您的數據和目標

考慮以下範例數據,它代表與此數據相關的作者:

1 A
1 B
1 C
1 D
2 E
2 F
3 G
3 H
3 I
3 J
3 K

您希望將此數據轉換為一種格式,其中每個唯一的摘要ID (_id) 與以逗號分隔的相應作者姓名列表相關聯,如下所示:

1 A,B,C,D
2 E,F

將GROUP_CONCAT 與聚合函數結合使用

GROUP_CONCAT 函數與聚合函數和GROUP BY 子句結合,可以實現此目標。一種常見的方法是使用子查詢建立中間表,正如您最初嘗試的那樣。然而,您錯過了關鍵的一步。

正確的方法

要正確使用GROUP_CONCAT,請執行以下步驟:

  1. 連接表:使用JOIN 子句建立相關表之間的關係,並確保行正確分組以進行串聯。
  2. 使用聚合函數:套用聚合函數 (例如,GROUP_CONCAT)來組合 GROUP BY 子句所識別的重複群組的值。
  3. GROUP BY 子句: 在 FROM 子句後麵包含 GROUP BY 子句以指定要指定哪些欄位將資料分組。

已更正的查詢

以下是遵循以下原則的更正查詢:

SELECT ABSTRACTS_ITEM._id, GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) AS GroupedName
FROM ABSTRACTS_ITEM 
JOIN AUTHORS_ABSTRACT ON ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
JOIN ABSTRACT_AUTHOR ON ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID
GROUP BY ABSTRACTS_ITEM._id;

替代查詢:

替代查詢:
SELECT ID,
GROUP_CONCAT(NAME) 
FROM
    (select ABSTRACTS_ITEM._id AS ID,
     Name
     from
    ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT
    where
    ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID
    and
    ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID)
GROUP BY ID;

替代查詢:替代查詢或者,您可以像最初嘗試的那樣使用子查詢方法,但使用正確的語法:兩個查詢都將成功連接每個摘要ID 的作者姓名,提供所需的輸出格式。

以上是如何使用 GROUP_CONCAT 在 SQLite 中有效地將多行中的值連接成單一字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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