मुझे लगता है कि आपको मूल्यों की गणना करने की आवश्यकता है, और चर सबसे आसान तरीका है। फिर, एक अतिरिक्त जुड़ाव आपको वह जानकारी देता है जिसकी आपको तालिका में सबसे अधिक बार आने वाले नामों से ऑर्डर करने की आवश्यकता होती है:
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;