Cara Mengembalikan 5 Item Teratas dalam Setiap Kategori dalam MySQL
Memulangkan bilangan rekod yang terhad daripada setiap kategori adalah keperluan biasa dalam aplikasi pangkalan data. Dalam kes khusus untuk mengembalikan 5 item menu teratas setiap menu, cabaran timbul disebabkan oleh subkueri yang mengembalikan berbilang baris untuk setiap menu, yang membawa kepada ralat "Subquery mengembalikan lebih daripada 1 baris".
Untuk mengatasi ini isu, pendekatan biasa adalah menggunakan pembolehubah kesan sampingan. Berikut ialah pertanyaan yang diperbetulkan yang menangani ralat:
SELECT profilename, name FROM ( SELECT m.profilename, s.name, @r:=case when @g=m.profilename then @r+1 else 1 end r, @g:=m.profilename FROM (select @g:=null,@r:=0) n cross join menus m left join menuitems s on m.menuid = s.menuid ) X WHERE r <= 5
Memecahkan pertanyaan:
Dengan menggunakan pembolehubah kesan sampingan, pertanyaan ini memastikan ia mengembalikan paling banyak 5 rekod untuk setiap kategori, menyelesaikan ralat asal.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan 5 Item Teratas dalam Setiap Kategori dalam MySQL: Mengendalikan Ralat Subkueri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!