Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris ke Baris Tunggal Menggunakan SQL?

Bagaimanakah Saya Boleh Menggabungkan Berbilang Baris ke Baris Tunggal Menggunakan SQL?

DDD
Lepaskan: 2025-01-15 08:48:43
asal
175 orang telah melayarinya

How Can I Concatenate Multiple Rows into a Single Row Using 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>
Salin selepas log masuk

Matlamatnya adalah untuk mencipta set keputusan seperti ini:

<code>Movie | ActorList
----------------
A      1, 2, 3
B      4</code>
Salin selepas log masuk

Menggunakan Pengagregatan Rentetan untuk Penyatuan

Fungsi

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

Berikut ialah pecahan:

  1. 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.
  2. GROUP BY movie: Ini mengumpulkan baris mengikut lajur movie, memastikan pelakon untuk filem yang sama diagregatkan bersama.
  3. actor_list: Ini ialah alias untuk rentetan bercantum yang terhasil.

Penambahbaikan dan Pertimbangan:

  • Jenis Data: Pastikan lajur anda diagregatkan ialah jenis teks. Jika tidak, gunakan pelakon yang jelas (seperti ::text ditunjukkan di atas).
  • Pemesanan: Untuk mengisih pelakon dalam setiap senarai, tambahkan 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>
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan