Fungsi Agregat untuk Penjanaan Senarai dalam MySQL (Serupa dengan LISTAGG Oracle)
Apabila berurusan dengan fungsi agregat dalam MySQL, keperluan biasa adalah untuk kembalikan senarai nilai yang dikumpulkan bersama. Dalam Oracle, fungsi LISTAGG memenuhi tujuan ini dengan berkesan. MySQL menawarkan penyelesaian alternatif yang mencapai hasil yang serupa.
Memahami Masalah
Tugas di tangan melibatkan mencipta fungsi yang menjana senarai rentetan daripada data yang disimpan dalam sebuah meja. Setiap rentetan mesti dipisahkan dengan koma. Sebagai contoh, jika jadual mengandungi data berikut:
Id | MyString |
---|---|
1 | First |
2 | Second |
3 | Third |
4 | Fourth |
Output yang diingini, serupa dengan fungsi LISTAGG Oracle, akan menjadi seperti ini apabila menapis untuk ID kurang daripada 4:
myList |
---|
First, Second, Third |
Penyelesaian: GROUP_CONCAT()
MySQL menyediakan GROUP_CONCAT() fungsi agregat sebagai alat yang mujarab untuk menggabungkan berbilang nilai ke dalam satu rentetan. Sintaksnya adalah mudah:
GROUP_CONCAT(MyString SEPARATOR ', ') AS myList
Dengan menggunakan fungsi ini pada jadual dengan kriteria penapisan yang ditentukan, kami boleh mendapatkan senarai rentetan yang dikehendaki dengan mudah.
Sebagai contoh, pertanyaan berikut akan menjana senarai nilai MyString yang dipisahkan koma untuk ID kurang daripada 4:
SELECT GROUP_CONCAT(MyString SEPARATOR ', ') AS myList FROM table WHERE id < 4
Kepelbagaian Tambahan
Fungsi GROUP_CONCAT() menawarkan fleksibiliti lanjut dengan membenarkan anda mengumpulkan hasil berdasarkan kriteria lain. Sebagai contoh, anda boleh mengubah suai pertanyaan untuk mengumpulkan hasil mengikut lajur lain, seperti medan kategori:
SELECT category, GROUP_CONCAT(MyString SEPARATOR ', ') AS myList FROM table GROUP BY category
Kefungsian yang dipertingkatkan ini membolehkan anda mencipta senario penjanaan senarai yang lebih kompleks dan disesuaikan. Dengan memanfaatkan fungsi GROUP_CONCAT(), MySQL menyediakan penyelesaian yang mantap untuk pengagregatan dan penjanaan senarai, setanding dengan keupayaan LISTAGG dalam Oracle.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Senarai Rentetan yang Dipisahkan Koma dalam MySQL Seperti LISTAGG Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!