MySQL (8.0 से पहले) में, आप इसके लिए वेरिएबल का उपयोग कर सकते हैं:
select genre_name, actor_id, cnt
from (select genre_name, actor_id, cnt,
(@rn := if(@g = genre_name, @rn + 1,
if(@g := genre_name, 1, 1)
)
) as rn
from (select g.genre_name, r.actor_id, count(*) as cnt
from movie m join
role r
on r.movie_id = m.movie_id join
movie_has_genre mhg
on mhg.movie_id = m.movie_id join
genre g
on g.genre_id = mhg.genre_id
group by g.genre_name, r.actor_id
order by g.genre_name, cnt desc
) ga cross join
(select @g := '', @rn := 0) params
) ga
where rn <= 3;
8.0+ में, row_number()
. का इस्तेमाल करें इस कार्यक्षमता के लिए एएनएसआई मानक विधि।
नोट:
- कभी नहीं
FROM
. में अल्पविराम का प्रयोग करें खंड। हमेशा उचित, स्पष्टJOIN
. का उपयोग करें वाक्य रचना। - टेबल एलियासेस का उपयोग करें जो आपके द्वारा उपयोग किए जा रहे कॉलम के लिए संक्षिप्ताक्षर हैं।
- आपके द्वारा उपयोग की जा रही क्वेरी में सभी कॉलम नामों को योग्य बनाएं, खासकर जब
FROM
खंड एक से अधिक तालिका का संदर्भ देता है।