Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris Subkueri ke dalam Medan Terhad Tunggal dalam Pelayan SQL?

Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris Subkueri ke dalam Medan Terhad Tunggal dalam Pelayan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-22 00:22:11572semak imbas

How Can I Concatenate Multiple Subquery Rows into a Single Delimited Field in SQL Server?

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:

<code class="language-sql">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]</code>

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:

<code class="language-sql">SELECT  [VehicleID]
       ,[Name]
       ,(SELECT STRING_AGG([City], ', ')
         FROM [Location]
         WHERE VehicleID = V.VehicleID) AS Locations
FROM   [Vehicle] V</code>

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!

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