Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Berbilang Label ke dalam Baris Tunggal Berdasarkan ID?
Menggabungkan Nilai Berdasarkan ID
Soalan ini bertujuan untuk mengubah jadual dengan berbilang baris setiap ID dan satu lajur 'Label' menjadi jadual dengan satu baris setiap ID dan lajur 'Label' yang digabungkan. Setiap label hendaklah dipisahkan dengan koma.
Data yang disediakan terdiri daripada pemerhatian berikut:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Undersstand |
12458 | Was not resolved |
12458 | Did not communicate |
12586 | Spoke too fast |
12587 | Too slow |
Output yang dikehendaki ialah:
Response_ID | Label |
---|---|
12147 | It was not clear |
12458 | Did not Undersstand,Was not resolved,Did not communicate |
12586 | Spoke too fast |
12587 | Too Slow |
Untuk mencapai transformasi ini , coretan kod berikut boleh digunakan:
declare @T table(Response_ID int, Label varchar(50)) insert into @T values (12147, 'It was not clear'), (12458, 'Did not Undersstand'), (12458, 'Was not resolved'), (12458, 'Did not communicate'), (12586, 'Spoke too fast'), (12587, 'Too slow') select T1.Response_ID, stuff((select ','+T2.Label from @T as T2 where T1.Response_ID = T2.Response_ID for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label from @T as T1 group by T1.Response_ID
Subkueri dalam fungsi 'barang' menggunakan penggabungan melalui operator ' ' dan kaedah XML untuk mengendalikan gabungan label. Fungsi 'nilai' parameter 'jenis' menukarkan output XML kepada jenis varchar(maks) untuk memastikan paparan hasil bercantum yang betul.
Sila ambil perhatian bahawa tanpa perintah demi pernyataan dalam subkueri, susunan bercantum rentetan tidak boleh dijamin.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Label ke dalam Baris Tunggal Berdasarkan ID?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!