Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Nilai Lajur dengan GROUP BY dalam SQL?

Bagaimana untuk Menggabungkan Nilai Lajur dengan GROUP BY dalam SQL?

DDD
DDDasal
2025-01-14 09:46:43767semak imbas

How to Concatenate Column Values with GROUP BY in SQL?

Gunakan pernyataan GROUP BY SQL untuk menyertai nilai lajur

Andaikan anda mempunyai jadual yang mengandungi data berikut:

<code>ID | 用户 | 活动 | 页面URL
1 | 我 | act1 | ab
2 | 我 | act1 | cd
3 | 你 | act2 | xy
4 | 你 | act2 | st</code>

Anda mahu mengumpulkan data mengikut Pengguna dan Aktiviti dan menggabungkan nilai dari lajur URL Halaman dalam setiap kumpulan menjadi satu koma- Rentetan yang dipisahkan. Output yang dikehendaki adalah seperti berikut:

<code>用户 | 活动 | 页面URL
我 | act1 | ab, cd
你 | act2 | xy, st</code>

Untuk mencapai gabungan ini menggunakan pertanyaan GROUP BY, anda boleh menggunakan fungsi STUFF() bersama-sama dengan subquery dalam klausa GROUP BY. Berikut ialah pecahan terperinci:

<code class="language-sql">SELECT
    [用户], 活动,
    STUFF(
        (SELECT DISTINCT ',' + 页面URL
         FROM 表名称
         WHERE [用户] = a.[用户] AND 活动 = a.活动
         FOR XML PATH (''))
         , 1, 1, '')  AS URL列表
FROM 表名称 AS a
GROUP BY [用户], 活动</code>
  • PILIH: Pilih lajur yang diperlukan: Pengguna, Aktiviti dan URL Halaman yang disambungkan sebagai senarai nilai URL .
  • STUFF(): Fungsi ini menerima tiga parameter: rentetan yang akan diubah suai, kedudukan permulaan, bilangan aksara yang akan dipadamkan dan rentetan yang akan dimasukkan. Dalam kes ini, ia mengalih keluar aksara pertama (koma) dan memasukkan nilai URL Halaman yang digabungkan ke dalam rentetan yang diubah suai.
  • Subkueri dalam
  • UNTUK LALUAN XML(''): Subkueri ini memilih Pengguna dan Aktiviti 🎜>URL Halaman nilai. Ia menggunakan klausa FOR XML PATH('') untuk mengembalikan rentetan tunggal dengan menggabungkan nilai.
  • a.[Pengguna] DAN aktiviti = a.Aktiviti: Bahagian ini memastikan bahawa subkueri hanya mendapatkan semula nilai URL Halaman yang dimiliki oleh kumpulan yang sedang diproses.
  • KUMPULAN OLEH: Himpunkan data mengikut Pengguna dan Aktiviti untuk mengagregat nilai URL Halaman untuk setiap kumpulan.
Dengan melaksanakan pertanyaan ini, anda akan mendapat output yang diingini di mana nilai

URL Halaman ​​untuk setiap gabungan Pengguna dan Aktiviti unik digabungkan bersama dan dipisahkan dengan koma.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Nilai Lajur dengan GROUP BY dalam 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