Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana Senarai Dipisahkan Koma dengan Cekap daripada Berbilang Jadual SQL?

Bagaimana untuk Menjana Senarai Dipisahkan Koma dengan Cekap daripada Berbilang Jadual SQL?

Barbara Streisand
Lepaskan: 2025-01-18 22:21:11
asal
137 orang telah melayarinya

How to Efficiently Generate Comma-Separated Lists from Multiple SQL Tables?

Sepadukan pertanyaan SQL untuk menjana senarai dipisahkan koma

Dalam SQL, selalunya perlu menjana senarai yang dipisahkan koma daripada data dalam berbilang jadual. Sebagai contoh, katakan anda mempunyai tiga jadual: Applications(id,name), Resources(id,name) dan ApplicationsResources(id,app_id,resource_id), dan anda ingin membuat jadual yang memaparkan semua nama sumber, di mana setiap baris mengandungi senarai aplikasi yang dipisahkan koma yang dikaitkan dengan sumber.

Cara paling mudah ialah melakukan pertanyaan berasingan untuk setiap sumber, tetapi ini tidak cekap. Sebaliknya, kita boleh memanfaatkan teknik SQL yang lebih kompleks untuk mencapai ini dalam satu pertanyaan.

Kaedah:

Pertanyaan SQL berikut menunjukkan cara untuk mencapai ini:

MySQL:

<code class="language-sql">SELECT r.name,
         GROUP_CONCAT(a.name SEPARATOR ',')
    FROM RESOURCES r
    JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id
    JOIN APPLICATIONS a ON a.id = ar.app_id
GROUP BY r.name</code>
Salin selepas log masuk

SQL Server (2005):

<code class="language-sql">SELECT r.name,
       STUFF((SELECT ',' + a.name
               FROM APPLICATIONS a
               JOIN APPLICATIONRESOURCES ar ON ar.app_id = a.id
              WHERE ar.resource_id = r.id
           GROUP BY a.name
            FOR XML PATH(''), TYPE).value('text()[1]','NVARCHAR(max)'), 1, LEN(','), '')
 FROM RESOURCES r</code>
Salin selepas log masuk

SQL Server (2017):

<code class="language-sql">SELECT r.name,
         STRING_AGG(a.name, ',')
    FROM RESOURCES r
    JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id
    JOIN APPLICATIONS a ON a.id = ar.app_id
GROUP BY r.name</code>
Salin selepas log masuk

Oracle:

Dalam Oracle, pengagregatan rentetan dan cantuman dikendalikan secara berbeza. Sila rujuk dokumentasi Oracle untuk teknik pemprosesan rentetan tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Senarai Dipisahkan Koma dengan Cekap daripada Berbilang Jadual SQL?. 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