Menghadkan Keputusan dengan GROUP_CONCAT
Dalam dunia pertanyaan pangkalan data, fungsi GROUP_CONCAT memainkan peranan penting dalam menggabungkan nilai daripada berbilang baris. Walau bagaimanapun, apabila berurusan dengan set data yang luas, selalunya menjadi penting untuk mengehadkan bilangan hasil yang digabungkan. Di sinilah masalah "GROUP_CONCAT dengan had" timbul.
Pertimbangkan pangkalan data dengan pemain yang dikaitkan dengan kemahiran melalui perhubungan banyak-ke-banyak. Matlamatnya adalah untuk membentangkan senarai pemain bersama-sama dengan "3 kemahiran teratas" mereka dalam satu pertanyaan. Untuk mencapai matlamat ini, seseorang mungkin mencuba perkara berikut:
SELECT p.id, group_concat(s.title SEPARATOR ', ') as skills FROM player p LEFT JOIN player_skills ps ON ps.player_id = p.id LEFT JOIN skill s ON s.id = ps.skill_id WHERE ps.value > 2 group by p.id order by s.id
Malangnya, pertanyaan ini tidak mengenakan sebarang had ke atas bilangan kemahiran yang digabungkan. Untuk menyelesaikan masalah ini, pendekatan yang sedikit tidak konvensional boleh diguna pakai:
substring_index(group_concat(s.title SEPARATOR ','), ',', 3) as skills
Helah ini pada asasnya memproses hasil GROUP_CONCAT, menghiris rentetan bercantum untuk memasukkan hanya tiga kemahiran pertama, dengan mengandaikan ia dipisahkan dengan koma .
Adalah penting untuk ambil perhatian bahawa penyelesaian ini mengandaikan ketiadaan koma dalam nama kemahiran dan bilangan kemahiran yang munasabah.
Pertimbangan Utama:
Apabila menggunakan GROUP_CONCAT dengan berbilang cantuman, adalah penting untuk memastikan bahawa jadual pemautan mempunyai kunci utama yang unik. Dalam kes jadual kemahiran_pemain, kunci utama hendaklah terdiri daripada kedua-dua player_id dan skill_id. Ini menghalang tugasan kemahiran pendua untuk pemain, memastikan keputusan yang tepat daripada penggabungan kumpulan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengehadkan Bilangan Hasil Gabungan Menggunakan GROUP_CONCAT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!