首頁 > 資料庫 > mysql教程 > 如何在不使用 LISTAGG 的情況下有效連接 SQL Server 中的行值?

如何在不使用 LISTAGG 的情況下有效連接 SQL Server 中的行值?

Patricia Arquette
發布: 2024-12-20 08:41:16
原創
562 人瀏覽過

How Can I Efficiently Concatenate Row Values in SQL Server Without LISTAGG?

在 SQL Server 中連接行值:LISTAGG 的替代方案

SQL 中常見的字串挑戰之一是跨行聚合字串值。在這種情況下,LISTAGG 是許多資料庫系統都支援的便利功能。但是,在 SQL Server 中,沒有與 LISTAGG 直接等效的函數。

要在 SQL Server 中實作類似的功能,一種方法是在主查詢中使用子查詢。然而,如下所示的傳統方法有一個潛在的缺點:

SELECT *, 
 (SELECT AGG(CarModel) 
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make
登入後複製

在此查詢中,AGG 可以替換為STRING_AGG 和GROUP_CONCAT 函數的組合:

SELECT *, 
 (SELECT STRING_AGG(CarModel, ', ')
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make
登入後複製

此修改後來的查詢為連接SQL Server 中的行值提供了強大的解決方案。然而,值得注意的是,這種方法的性能特徵可能會根據資料集的大小和複雜性而變化。

以上是如何在不使用 LISTAGG 的情況下有效連接 SQL Server 中的行值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板