Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Berbilang Nama Pertama Pengulas ke dalam Rentetan Dipisahkan Koma Tunggal dalam T-SQL?

Bagaimana untuk Menggabungkan Berbilang Nama Pertama Pengulas ke dalam Rentetan Dipisahkan Koma Tunggal dalam T-SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-15 07:54:43395semak imbas

How to Concatenate Multiple Reviewers' First Names into a Single Comma-Separated String in T-SQL?

Gabungan berbilang medan rekod dalam T-SQL

Dalam T-SQL, selalunya perlu untuk mengumpulkan medan berbilang rekod berdasarkan medan lain. Pertimbangkan senario berikut:

Anda mempunyai tiga jadual: Ulasan, Pengulas dan Pengguna. Jadual Ulasan mengandungi ID Semakan dan Tarikh Semakan. Jadual Reviewers mengandungi ReviewerID, ReviewID dan UserID. Akhir sekali, jadual Pengguna mengandungi ID Pengguna, FName dan LName.

Cabaran:

Anda ingin memaparkan senarai ulasan, setiap satu mengandungi tarikh semakan yang sepadan dan senarai nama semua pengulas yang dipisahkan koma yang dikaitkan dengan ulasan itu. Output yang dikehendaki kelihatan seperti ini:

<code>ReviewID---ReviewDate----Users
----------------------------
1----------12/1/2009-----Bob, Joe, Frank
2----------12/9/2009-----Sue, Alice</code>

bukannya:

<code>ReviewID---ReviewDate---User
----------------------------
1----------12/1/2009----Bob
1----------12/1/2009----Joe
1----------12/1/2009----Frank
2----------12/9/2009----Sue
2----------12/9/2009----Alice</code>

Penyelesaian:

Salah satu cara untuk menyelesaikan masalah ini ialah menggunakan kaedah FOR XML PATH(''):

<code class="language-sql">SELECT  *,
        ( 
            SELECT  u.FName + ','
            FROM    @Users u INNER JOIN 
                    @Reviewers rs ON u.UserID = rs.UserID
            WHERE   rs.ReviewID = r.ReviewID
            FOR XML PATH('')
        ) AS Users
FROM    @Reviews r</code>

Berikut ialah pecahan pertanyaan:

  • Baris 1: Pilih lajur yang diperlukan daripada jadual Ulasan: ID Semakan dan Tarikh Semakan.

  • Baris 4-9: Gunakan subkueri untuk mendapatkan semula senarai nama yang dipisahkan koma untuk setiap ulasan.

      Subkueri
    • menyertai jadual Pengguna dan Penyemak berdasarkan ID Pengguna.
    • Ia memilih lajur FName dan menggabungkan koma selepas setiap nama.
    • Bahagian
    • FOR XML PATH('') mengagregatkan hasil ke dalam satu rentetan.
  • Baris 10: Hasil daripada subkueri dialiaskan sebagai Pengguna.

Output yang disemak ini menjelaskan alias dan meningkatkan kebolehbacaan Fungsi teras kekal sama, dengan cekap menggabungkan nama pertama pengulas menjadi rentetan yang dipisahkan koma.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Nama Pertama Pengulas ke dalam Rentetan Dipisahkan Koma Tunggal dalam T-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