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

प्रत्येक श्रेणी के लिए N रिकॉर्ड का चयन करें और X . द्वारा ऑर्डर करें

MySQL नहीं विश्लेषणात्मक कार्यों (ROW_NUMBER, RANK, DENSE_RANK, NTILE...) का समर्थन करें, लेकिन आप चर के साथ कार्यक्षमता का अनुकरण कर सकते हैं।

यदि आप N . चाहते हैं नवीनतम ब्लॉग पोस्ट:

SELECT x.id,
       x.title,
       x.description,
       x.cat,
       x.filename,
       x.date
  FROM (SELECT bp.id,
               bp.title,
               bp.description,
               bp.cat,
               bp.filename,
               bp.date,
               CASE 
                 WHEN bp.cat = @category THEN @rownum := @rownum + 1
                 ELSE @rownum := 1
               END AS rank,
               @category := bp.cat
          FROM BLOG_POSTS bp
          JOIN (SELECT @rownum := 0, @category := NULL) r
      ORDER BY bp.cat, bp.date DESC) x
 WHERE x.rank <= N

यदि आप चाहते हैं कि 1 का रैंक जल्द से जल्द ब्लॉग पोस्ट हो, तो ORDER BY को इसमें बदलें:

ORDER BY bp.cat, bp.date


  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. Laravel जॉइन स्टेटमेंट में SQL_BIG_SELECTS=1 कैसे सेट करें?

  3. MySQL COUNT () और नल

  4. एसएसएल पर PHP MySQL। पीयर सर्टिफिकेट मैच नहीं हुआ

  5. MySQL एक उपयोगकर्ता की प्रतिलिपि बनाएँ