Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Berbilang Baris Subquery dengan Cekap ke dalam Medan Terhad Tunggal dalam Pelayan SQL?

Bagaimana untuk Menggabungkan Berbilang Baris Subquery dengan Cekap ke dalam Medan Terhad Tunggal dalam Pelayan SQL?

DDD
DDDasal
2025-01-22 00:32:38281semak imbas

How to Efficiently Combine Multiple Subquery Rows into a Single Delimited Field in SQL Server?

Memperkemas Manipulasi Data Pelayan SQL: Menggabungkan Baris Subkueri ke dalam Medan Terhad Tunggal

Tugas manipulasi data yang rumit selalunya melibatkan penulisan kod yang menyusahkan, seperti penyelesaian berasaskan kursor. Cabaran biasa ialah menggabungkan berbilang baris subquery ke dalam satu medan dengan pembatas. Artikel ini membentangkan alternatif yang cekap kepada pelaksanaan kursor yang panjang.

Pertimbangkan dua jadual, "Kenderaan" dan "Lokasi," yang matlamatnya adalah untuk menyatukan nama bandar yang dikaitkan dengan setiap kenderaan ke dalam lajur "Lokasi" tunggal, dipisahkan koma. Pendekatan kursor tradisional memerlukan pengekodan yang meluas.

SQL Server 2005 dan kemudian:

Penyelesaian yang lebih elegan menggunakan perintah FOR XML PATH. Ini menjana XML daripada jadual "Lokasi", memisahkan nama bandar dengan koma, dan kemudian menukar XML kembali kepada rentetan teks menggunakan fungsi STUFF:

<code class="language-sql">SELECT [VehicleID], [Name],
       (STUFF((SELECT ',' + [City]
               FROM [Location]
               WHERE (VehicleID = Vehicle.VehicleID)
               FOR XML PATH('')), 1, 1, '')) AS Locations
FROM [Vehicle]</code>

SQL Server 2017 dan kemudian:

Untuk prestasi dan kesederhanaan yang dipertingkatkan, SQL Server 2017 dan versi yang lebih baru menawarkan fungsi STRING_AGG. Fungsi ini secara langsung mengagregatkan nilai ke dalam rentetan tunggal, menerima pemisah sebagai parameter kedua:

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

Kedua-dua kaedah dengan berkesan menggabungkan berbilang baris subquery ke dalam medan terhad tunggal, menawarkan peningkatan ketara berbanding pendekatan berasaskan kursor, menghasilkan kod yang lebih bersih, lebih cekap dan mengurangkan masa pembangunan. Pilih kaedah yang sesuai untuk versi SQL Server anda.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris Subquery dengan Cekap 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