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

mysql समूह के साथ दूसरा उच्चतम मूल्य कैसे प्राप्त करें और बाएं में शामिल हों

सबसे पहले, आपको तीसरे जॉइन की बिल्कुल भी आवश्यकता नहीं है। आप अपनी गणना एक जॉइन में कर सकते हैं:

from (select id
      from owner
      where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
     ) as a left join
     (select owner_id, max(nb) as maxbid, max(mb) as maxautobi
      from auction
      group by owner_id
     ) b
     on a.id=b.owner_id;

mb . के लिए दूसरा सबसे बड़ा मान प्राप्त करना फिर एक ट्रिक का उपयोग करता है, जिसमें substring_index() . शामिल है और group_concat() :

   from (select id
          from owner
          where date_format(auction_date,'%Y-%m-%d %H:%i:00') = date_format(NOW(),'%Y-%m-%d %H:%i:00')
         ) as a left join
         (select owner_id, max(nb) as maxbid, max(mb) as maxautobi,
                 substring_index(substring_index(group_concat(mb order by mb desc), ',', 2), ',', -1
                                ) as second_mb
          from auction
          group by owner_id
         ) b
         on a.id=b.owner_id;

विचार mb . द्वारा क्रम में मानों को एक साथ जोड़ना है . फिर सूची का दूसरा तत्व लें। एक नकारात्मक पहलू यह है कि मान को एक वर्ण स्ट्रिंग में बदल दिया जाता है, भले ही वह एक संख्या के रूप में शुरू हो।




  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 के लिए Google OAuth 2.0 उपयोगकर्ता आईडी डेटाटाइप

  2. MySQL संग्रहीत कार्यों और प्रक्रियाओं को कैसे बनाएं और निष्पादित करें

  3. MySQL का डिफ़ॉल्ट संयोजन latin1_swedish_ci क्यों है?

  4. MySQL रूट पासवर्ड पुनर्प्राप्त करें

  5. MySQL - क्या प्रत्येक तालिका में इसका अपना आईडी/प्राथमिक कॉलम होना चाहिए?