Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Rentetan Tunggal dalam SQL?

Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Rentetan Tunggal dalam SQL?

Patricia Arquette
Lepaskan: 2025-01-01 12:19:10
asal
337 orang telah melayarinya

How to Concatenate Multiple Rows into a Single String in SQL?

Menggabungkan Nilai Berdasarkan ID

Dalam manipulasi data, selalunya perlu untuk menggabungkan data daripada berbilang baris menjadi satu rentetan. Ini boleh dicapai melalui penggabungan, di mana rentetan dipasang daripada serpihan yang lebih kecil.

Pernyataan Masalah:

Anda mempunyai jadual yang dipanggil "Keputusan" dengan dua lajur: " Response_ID" dan "Label." Setiap "Response_ID" sepadan dengan berbilang nilai "Label". Matlamat anda ialah untuk menjana jadual baharu dengan satu baris setiap "Response_ID" dan semua nilai "Label" digabungkan menjadi satu rentetan, dipisahkan dengan koma.

Penyelesaian:

Untuk menggabungkan nilai berdasarkan "Response_ID", anda boleh menggunakan SQL berikut pertanyaan:

select T1.Response_ID,
       stuff((select ','+T2.Label
              from Results as T2
              where T1.Response_ID = T2.Response_ID
              for xml path(''), type).value('.', 'varchar(max)'), 1, 1, '') as Label
from Results as T1
group by T1.Response_ID
Salin selepas log masuk

Penjelasan:

  • T1.Response_ID: Lajur "Response_ID" daripada jadual asal.
  • Stuff(): Fungsi ini menyatukan rentetan. Ia memerlukan hujah berikut:

    • Rentetan yang terhasil untuk digabungkan (dalam kurungan).
    • Kedudukan permulaan dalam rentetan yang terhasil di mana penggabungan harus bermula (1 dalam kes ini).
    • Panjang subrentetan yang akan dialih keluar dari permulaan rentetan yang terhasil (1 dalam kes ini).
    • The rentetan untuk digabungkan.
  • Laluan XML: Subkueri ini menjana serpihan XML untuk proses penggabungan. Setiap nilai "Label" dibalut dalam elemen XML yang dipisahkan koma.
  • value(): Fungsi ini mengekstrak rentetan bercantum daripada serpihan XML.

Contoh:

Pertimbangkan perkara berikut jadual:

Response_ID Label
12147 It was not clear
12458 Did not Understand
12458 Was not resolved
12458 Did not communicate
12586 Spoke too fast
12587 Too slow

Pertanyaan di atas akan menghasilkan output berikut:

Response_ID Label
12147 It was not clear
12458 Did not Understand,Was not resolved,Did not communicate
12586 Spoke too fast
12587 Too slow

Nota: Susunan rentetan bercantum mungkin tidak selalu boleh diramal. Untuk kawalan tepat ke atas pesanan, anda boleh menggunakan pernyataan "ORDER BY" dalam subquery.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Rentetan Tunggal dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan