Menggabungkan Hasil Subkueri dengan Cekap ke dalam Medan Terhad Tunggal dalam Pelayan SQL
SQL Server menawarkan beberapa kaedah untuk menggabungkan berbilang baris daripada subkueri ke dalam satu medan dengan pembatas. Walaupun kursor sebelah pelayan adalah pilihan, ia selalunya kurang cekap. Artikel ini meneroka teknik yang lebih berkesan.
UNTUK LALUAN XML: Penyelesaian untuk Versi Pelayan SQL Lama (2005 dan Ke Bawah)
Untuk SQL Server 2005 dan versi terdahulu, arahan FOR XML PATH
menyediakan penyelesaian ringkas:
SELECT [VehicleID] , [Name] , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH ('')), 1, 2, '')) AS Locations FROM [Vehicle]
Ini dengan bijak menggunakan penjanaan laluan XML untuk menggabungkan nilai City
, kemudian STUFF
mengalih keluar koma awal.
STRING_AGG: Kaedah Pilihan untuk SQL Server 2017 dan Kemudian
SQL Server 2017 dan versi yang lebih baru memperkenalkan STRING_AGG
, fungsi yang dipertingkatkan dengan ketara:
SELECT [VehicleID] ,[Name] ,(SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V
STRING_AGG
menawarkan prestasi yang lebih baik dan membenarkan pembatas tersuai, menjadikannya pendekatan yang disyorkan untuk penggunaan SQL Server moden.
Ringkasan
Kaedah ini menyediakan cara yang cekap untuk menyatukan berbilang baris subkueri ke dalam rentetan terhad dalam SQL Server, memperkemas tugas manipulasi data. Memilih kaedah yang sesuai bergantung pada versi SQL Server anda; STRING_AGG
ialah pilihan pilihan untuk versi yang lebih baharu kerana prestasi dan fleksibiliti yang dipertingkatkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris Subkueri ke dalam Medan Terhad Tunggal dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!