Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris ke Baris Tunggal Menggunakan SQL?
Menggabungkan Berbilang Baris menjadi Baris Tunggal dengan SQL
Banyak tugas pangkalan data memerlukan penggabungan berbilang baris dengan nilai yang sama dalam satu lajur menjadi satu baris, menggabungkan nilai dari lajur lain. Bayangkan pangkalan data filem dengan pelakon disenaraikan dalam baris berasingan untuk setiap filem:
<code>Movie | Actor ---------------- A 1 A 2 A 3 B 4</code>
Matlamatnya adalah untuk mencipta set keputusan seperti ini:
<code>Movie | ActorList ---------------- A 1, 2, 3 B 4</code>
Menggunakan Pengagregatan Rentetan untuk Penyatuan
FungsiSQL string_agg
menyediakan penyelesaian yang cekap. Fungsi agregat ini menggabungkan nilai daripada lajur yang ditentukan. Inilah pertanyaannya:
<code class="language-sql">SELECT movie, string_agg(actor::text, ', ') AS actor_list FROM tbl GROUP BY movie;</code>
Berikut ialah pecahan:
string_agg(actor::text, ', ')
: Bahagian ini menggabungkan nilai lajur actor
, menggunakan koma dan ruang sebagai pemisah. ::text
secara eksplisit menghantar lajur actor
ke teks, yang diperlukan jika ia bukan jenis data teks.GROUP BY movie
: Ini mengumpulkan baris mengikut lajur movie
, memastikan pelakon untuk filem yang sama diagregatkan bersama.actor_list
: Ini ialah alias untuk rentetan bercantum yang terhasil.Penambahbaikan dan Pertimbangan:
::text
ditunjukkan di atas).ORDER BY
di dalam string_agg
:<code class="language-sql">SELECT movie, string_agg(actor::text, ', ' ORDER BY actor) AS actor_list FROM tbl GROUP BY movie;</code>
Isih dalam pertanyaan ini secara amnya lebih cekap daripada mengisih set hasil akhir.
Pendekatan ini menggabungkan berbilang baris dengan berkesan menjadi satu baris yang lebih mudah diurus, menjadikan analisis data dan pelaporan lebih mudah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris ke Baris Tunggal Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!