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

mysql तालिका से प्रत्येक श्रेणी में अंतिम 2 प्रविष्टियाँ प्रदर्शित करें

इस प्रकार के परिणामों को अन्य RDBMS में विंडो फ़ंक्शंस द्वारा सबसे अच्छा नियंत्रित किया जाता है, लेकिन दुर्भाग्य से Mysql के पास कोई विंडो फ़ंक्शन नहीं है, इसलिए विकल्प के लिए एक ही समूह से संबंधित पंक्तियों के लिए रैंक असाइन करने के लिए उपयोगकर्ता परिभाषित चर का उपयोग करने का एक समाधान है

SELECT  `id`, `category`, `names`
FROM (
SELECT *,
@r:= CASE WHEN @g = category THEN @r + 1 ELSE 1 END rownum,
@g:=category
FROM test
  CROSS JOIN(SELECT @g:=NULL ,@r:=0) t
  ORDER BY category,id desc
) c
WHERE c.rownum <=2 

उपरोक्त क्वेरी आपको प्रति श्रेणी 2 हालिया रिकॉर्ड (आईडी के आधार पर) देगी, आप क्वेरी के अंतिम भाग को बदल सकते हैं, जहां प्रति समूह n परिणाम दिखाने के लिए किसी भी संख्या के लिए क्लॉज उदाहरण के लिए 3 रिकॉर्ड दिखाने के लिए WHERE c.rownum <= 3 और इसी तरह

Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक स्तंभों पर सहसंबद्ध उपश्रेणी का प्रयोग करें

  2. Azure पर Laravel ऐप:उपयोगकर्ता 'azure'@'localhost' के लिए प्रवेश निषेध

  3. पेश है पिछले महीने के योग के लिए एक नया कॉलम

  4. MySQL प्रदर्शन:MySQL बनाम मारियाडीबी

  5. मिनट (स्तंभ) मुझे अन्य स्तंभों का सही डेटा नहीं लौटा रहा है