Saya pikir Anda perlu menghitung nilainya, dan variabel adalah cara paling sederhana. Kemudian, gabungan tambahan memberi Anda informasi yang Anda butuhkan untuk memesan berdasarkan nama yang paling sering muncul di tabel:
select t.*
from (select t.*,
(@rn := if(@n = name, @rn + 1,
if(@rn := name, 1, 1)
)
) as rn
from t cross join
(select @n := '', @rn := 0
order by name
) t join
(select name, count(*) as cnt
from t
group by name
) tn
on t.name = tn.name
where rn <= 4
order by cnt desc, name;