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
Linda Hamiltonasal
2025-01-14 08:07:501020semak imbas

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>

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.
  • 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!

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