Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur ke dalam Senarai Dipisahkan Koma Menggunakan Klausa SQL GROUP BY?
Mengagregatkan Data dengan GROUP BY: Mencipta Senarai Dipisahkan Koma
KlausaSQL GROUP BY
berkuasa untuk mengumpulkan baris berdasarkan nilai lajur yang dikongsi dan menggunakan fungsi agregat. Aplikasi yang kerap menggabungkan nilai daripada satu lajur menjadi satu rentetan yang dipisahkan koma untuk setiap kumpulan.
Mari kita ilustrasikan dengan contoh jadual:
<code>ID User Activity PageURL 1 Me act1 ab 2 Me act1 cd 3 You act2 xy 4 You act2 st</code>
Matlamat kami adalah untuk mengumpulkan mengikut User
dan Activity
, menggabungkan nilai PageURL
untuk setiap kumpulan. Output yang diingini:
<code>User Activity PageURL Me act1 ab, cd You act2 xy, st</code>
Penyelesaian Pelayan SQL menggunakan STUFF()
Dalam SQL Server, kita boleh mencapai ini menggunakan GROUP BY
dan fungsi STUFF()
:
<code class="language-sql">SELECT [User], Activity, STUFF( (SELECT DISTINCT ',' + PageURL FROM TableName WHERE [User] = a.[User] AND Activity = a.Activity FOR XML PATH ('')) , 1, 1, '') AS URLList FROM TableName AS a GROUP BY [User], Activity</code>
Penjelasan:
GROUP BY [User], Activity
: Ini mengumpulkan baris berdasarkan gabungan unik User
dan Activity
.SELECT
dalaman mendapatkan nilai PageURL
yang berbeza untuk setiap kumpulan. ',' PageURL
menambahkan koma sebelum setiap URL.FOR XML PATH('')
: Ini menukar set hasil menjadi satu rentetan, menggabungkan URL dengan koma dengan berkesan.STUFF(..., 1, 1, '')
: Ini mengalih keluar koma utama yang ditambahkan oleh subkueri, menghasilkan senarai yang dipisahkan koma yang bersih.Kesimpulan:
Pendekatan ini menggabungkan nilai lajur secara berkesan ke dalam senarai dipisahkan koma dalam setiap kumpulan yang ditakrifkan oleh klausa GROUP BY
. Ini adalah teknik serba boleh untuk ringkasan dan manipulasi data dalam SQL Server. Ambil perhatian bahawa fungsi khusus untuk penggabungan rentetan mungkin berbeza sedikit bergantung pada sistem pangkalan data anda (cth., GROUP_CONCAT
dalam MySQL).
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur ke dalam Senarai Dipisahkan Koma Menggunakan Klausa SQL GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!