Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur ke dalam Senarai Dipisahkan Koma Menggunakan Klausa SQL GROUP BY?

Bagaimanakah Saya Boleh Menggabungkan Nilai Lajur ke dalam Senarai Dipisahkan Koma Menggunakan Klausa SQL GROUP BY?

Linda Hamilton
Lepaskan: 2025-01-14 08:07:50
asal
1064 orang telah melayarinya

How Can I Combine Column Values into a Comma-Separated List Using SQL's GROUP BY Clause?

Mengagregatkan Data dengan GROUP BY: Mencipta Senarai Dipisahkan Koma

Klausa

SQL 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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Penjelasan:

  • GROUP BY [User], Activity: Ini mengumpulkan baris berdasarkan gabungan unik User dan Activity.
  • Subquery: Pernyataan 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!

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