Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में लूप के साथ यूनियन चयन को एकल चयन में कनवर्ट करें

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 खंड एक से अधिक तालिका का संदर्भ देता है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:दिनांक के अनुसार पिछली और अगली पंक्तियों के साथ आईडी द्वारा पंक्ति का चयन करें

  2. सत्यापन और डेटा एक डीबी तालिका में जोड़ें

  3. व्यवस्थापक के साथ अपना डेटाबेस कैसे प्रबंधित करें

  4. PHP में बाइनरी फ़ाइल डाउनलोड करने में असमर्थ

  5. MySQL का उपयोग करके तीन तालिकाओं में शामिल होना