Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nilai Berbeza Menggunakan STRING_AGG dalam Pelayan SQL?
Nilai Berbeza menggunakan STRING_AGG dalam SQL Server
Fungsi STRING_AGG dalam SQL Server 2017 membolehkan anda menggabungkan nilai menjadi satu rentetan. Walau bagaimanapun, ia boleh mengembalikan nilai pendua apabila menggabungkan medan dengan berbilang kejadian.
Pertimbangkan pertanyaan berikut:
SELECT ProjectID, STRING_AGG( newID.value, ',') WITHIN GROUP (ORDER BY newID.value) AS NewField FROM [dbo].[Data] WITH(NOLOCK) CROSS APPLY STRING_SPLIT([bID],';') AS newID WHERE newID.value IN ('O95833', 'Q96NY7-2') GROUP BY ProjectID ORDER BY ProjectID
Pertanyaan ini mengembalikan nilai yang digabungkan, tetapi pendua disertakan:
ProjectID | NewField |
---|---|
2 | O95833,O95833,O95833,Q96NY7-2,Q96NY7-2,Q96NY7-2 |
4 | Q96NY7-2,Q96NY7-2 |
Untuk mendapatkan semula nilai unik sahaja, gunakan kata kunci DISTINCT dalam subquery:
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 ini mengalih keluar pendua sebelum menggunakan fungsi STRING_AGG. Keputusan akhir ialah:
ProjectID | NewField |
---|---|
2 | O95833, Q96NY7-2 |
4 | Q96NY7-2 |
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Berbeza Menggunakan STRING_AGG dalam Pelayan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!