Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Nilai Baris dengan Cekap dalam Pelayan SQL Tanpa LISTAGG?

Bagaimanakah Saya Boleh Menggabungkan Nilai Baris dengan Cekap dalam Pelayan SQL Tanpa LISTAGG?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 08:41:16554semak imbas

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

Menggabungkan Nilai Baris dalam Pelayan SQL: Alternatif kepada LISTAGG

Salah satu cabaran biasa dalam SQL ialah mengagregatkan nilai rentetan merentas baris. Dalam konteks ini, LISTAGG ialah fungsi mudah yang disokong oleh banyak sistem pangkalan data. Walau bagaimanapun, dalam SQL Server, tiada persamaan langsung dengan LISTAGG.

Untuk mencapai kefungsian serupa dalam SQL Server, satu pendekatan ialah menggunakan subkueri dalam pertanyaan utama. Walau bagaimanapun, pendekatan tradisional yang ditunjukkan di bawah mempunyai potensi kelemahan:

SELECT *, 
 (SELECT AGG(CarModel) 
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make

Dalam pertanyaan ini, AGG boleh digantikan dengan gabungan fungsi STRING_AGG dan GROUP_CONCAT:

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

Pertanyaan yang diubah suai ini menyediakan penyelesaian yang mantap untuk menggabungkan nilai baris dalam SQL Server. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ciri prestasi pendekatan ini boleh berbeza-beza bergantung pada saiz dan kerumitan set data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Nilai Baris dengan Cekap dalam Pelayan SQL Tanpa LISTAGG?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn