Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menghapuskan Pendua Apabila Menggunakan STRING_AGG dalam Pelayan SQL?

Bagaimana untuk Menghapuskan Pendua Apabila Menggunakan STRING_AGG dalam Pelayan SQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-04 07:51:35609semak imbas

How to Eliminate Duplicates When Using STRING_AGG in SQL Server?

Menghapuskan Pendua dalam Keputusan STRING_AGG

Tugasnya ialah untuk mendapatkan semula nilai unik menggunakan fungsi STRING_AGG dalam SQL Server, memastikan elemen pendua dialih keluar .

Dalam contoh pertanyaan yang disediakan, fungsi STRING_AGG digunakan untuk menggabungkan rentetan ke dalam medan dipisahkan koma tunggal, dikumpulkan mengikut ProjectID. Walau bagaimanapun, NewField yang terhasil mengandungi nilai pendua.

Untuk mendapatkan NewField yang unik, kami boleh menggunakan kata kunci DISTINCT dalam subkueri. Pertanyaan yang dikemas kini ialah:

SELECT 
  ProjectID
, STRING_AGG(value, ',') WITHIN GROUP (ORDER BY value) AS 
  NewField
FROM (
  SELECT DISTINCT 
    ProjectID
  , newId.value 
  FROM [dbo].[Data] WITH (NOLOCK)  
  CROSS APPLY STRING_SPLIT([bID],';') AS newId  
  WHERE newId.value IN (   'O95833' , 'Q96NY7-2'  )  
) x
GROUP BY ProjectID
ORDER BY ProjectID

Subquery terlebih dahulu memilih nilai ProjectID dan newId.value yang berbeza daripada jadual asal. Nilai berbeza ini kemudiannya digunakan dalam pertanyaan luar untuk melaksanakan operasi STRING_AGG, memastikan tiada pendua hadir dalam hasil NewField akhir.

Melaksanakan pertanyaan yang diubah suai ini menghasilkan output yang diingini dengan hanya nilai unik:

ProjectID | NewField
----------+----------
2         | O95833, Q96NY7-2
4         | Q96NY7-2

Atas ialah kandungan terperinci Bagaimana untuk Menghapuskan Pendua Apabila Menggunakan STRING_AGG 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