」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在PostgreSQL中的多個行之間串聯值?

如何在PostgreSQL中的多個行之間串聯值?

發佈於2025-02-21
瀏覽:516

How Can I Concatenate Values Across Multiple Rows in PostgreSQL?

PostgreSQL 數據行值連接

在關係型數據庫操作中,常常需要在獲取最終結果前對數據進行處理。一個常見任務是基於公共標識符連接多行的值。在PostgreSQL中,GROUP_CONCAT 函數為此提供了一個簡單的解決方案。

GROUP_CONCAT 函數

PostgreSQL 9.0版本及以上引入了GROUP_CONCAT聚合函數,它接收列中的一組值並將它們連接成單個字符串。 GROUP_CONCAT的語法如下:

GROUP_CONCAT(DISTINCT expression [ORDER BY expression] [separator])

參數:

  • DISTINCT: (可選) 防止重複值包含在結果中。
  • expression: 要連接的列或表達式。
  • ORDER BY: (可選) 指定連接值的順序。
  • separator: (可選) 用於分隔連接值的字符或字符串。默認為逗號 (,)。

示例

考慮名為 "sample_data" 的以下表格:

idvalue
TM674
TM679
TM6772
TM992
TM993

要連接每個唯一 "id" 的 "value" 列中的值,我們可以使用如下所示的 GROUP_CONCAT

SELECT id, GROUP_CONCAT(value) AS concatenated_values
FROM sample_data
GROUP BY id;

此查詢將產生以下輸出:

idconcatenated_values
TM674,9,72
TM992,3

如您所見,每個 "id" 的值已連接並用逗號分隔。

PostgreSQL 9.0 的替代語法

從PostgreSQL 9.0版本開始,可以使用GROUP_CONCAT的替代語法:

SELECT id, string_agg(value, ',') AS concatenated_values
FROM sample_data
GROUP BY id;

此語法等效於上面描述的 GROUP_CONCAT 語法。

結論

通過使用 GROUP_CONCATstring_agg 函數,您可以輕鬆地在PostgreSQL中連接多行數據。 選擇哪種語法取決於您的PostgreSQL版本和個人偏好。

最新教學 更多>

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

Copyright© 2022 湘ICP备2022001581号-3