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

GROUP BY और ORDER BY के साथ MySQL गलत परिणाम देता है

यह आपकी क्वेरी है:

SELECT *
FROM (SELECT *
      FROM user_comission_configuration_history
      ORDER BY on_date DESC
     ) AS ordered_history
WHERE user_id = 408002
GROUP BY comission_id;

आपकी क्वेरी के साथ एक बड़ी समस्या यह है कि यह group by . के लिए MySQL एक्सटेंशन का उपयोग करती है कि MySQL स्पष्ट रूप से खिलाफ चेतावनी देता है। एक्सटेंशन select . में अन्य स्तंभों का उपयोग है जो group by . में नहीं हैं या एकत्रीकरण कार्यों में। चेतावनी (यहां ) है:

इसलिए, कॉलम में दिए गए मान अनिश्चित हैं ।

आप जो चाहते हैं उसे प्राप्त करने का एक बहुत ही कुशल तरीका है (अंग्रेजी में "कमीशन" की सही वर्तनी के साथ):

SELECT *
FROM user_commission_configuration_history cch
WHERE NOT EXISTS (select 1
                  from user_commission_configuration_history cch2
                  where cch2.user_id = cch.user_id and
                        cch2.commission_id = cch.commission_id and
                        cch2.on_date > cch.on_date
                 ) AND
      cch.user_id = 408002;


  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. SQL में Null, Zero और Blank में क्या अंतर हैं?

  3. MySQL में एक बहु-स्तंभ अनुक्रमणिका में स्तंभों का क्रम

  4. डेटाबेस से निकटतम (दूरी) रिकॉर्ड को प्रभावी ढंग से चुनना

  5. डेटा अपडेट करने के लिए पीडीओ में फॉर्म