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

MySQL ग्रुप बाय एंड ऑर्डर बाय

एक सरल उपाय यह है कि क्वेरी को ORDER कथन पहले . के साथ उप-चयन में लपेट दिया जाए और ग्रुप बाय को बाद में लागू करना :

SELECT * FROM ( 
    SELECT `timestamp`, `fromEmail`, `subject`
    FROM `incomingEmails` 
    ORDER BY `timestamp` DESC
) AS tmp_table GROUP BY LOWER(`fromEmail`)

यह जॉइन का उपयोग करने के समान है लेकिन बहुत अच्छा लगता है।

ग्रुप बाय क्लॉज के साथ चयन में गैर-कुल कॉलम का उपयोग करना गैर-मानक है। MySQL आम तौर पर पहली पंक्ति के मानों को वापस कर देता है और बाकी को त्याग देता है। कोई भी ऑर्डर बाय क्लॉज केवल लौटाए गए कॉलम मान पर लागू होगा, न कि छोड़े गए कॉलम के लिए।

महत्वपूर्ण अद्यतन अभ्यास में काम करने के लिए इस्तेमाल किए गए गैर-कुल स्तंभों का चयन करना, लेकिन उन पर भरोसा नहीं किया जाना चाहिए। MySQL प्रलेखन के अनुसार "यह प्राथमिक रूप से तब उपयोगी होता है जब ग्रुप BY में नामित प्रत्येक गैर-समेकित कॉलम में सभी मान प्रत्येक समूह के लिए समान होते हैं। सर्वर कोई भी मान चुनने के लिए स्वतंत्र है प्रत्येक समूह से, इसलिए जब तक कि वे समान न हों, चुने गए मान अनिश्चित होते हैं ।"

5.7.5 से ONLY_FULL_GROUP_BY डिफ़ॉल्ट रूप से सक्षम है इसलिए गैर-कुल कॉलम क्वेरी त्रुटियों का कारण बनते हैं (ER_WRONG_FIELD_WITH_GROUP)

जैसा कि @mikep समाधान के नीचे बताता है ANY_VALUE() 5.7 और ऊपर से

देखेंhttp://www.cafewebmaster.com/mysql-order-sort-group https://dev.mysql.com/doc /refman/5.6/hi/group-by-handling.html https://dev.mysql.com/doc /refman/5.7/hi/group-by-handling.html https://dev.mysql.com /doc/refman/5.7/hi/miscellaneous-functions.html#function_any-value



  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. पंक्तियों को कॉलम में गतिशील रूप से परिवर्तित करने के लिए MySQL क्वेरी

  3. क्या MySQL में ट्री स्ट्रक्चर टेबल को एक ही क्वेरी में, किसी भी गहराई तक क्वेरी करना संभव है?

  4. एक MYSQL DB पर BLOB के रूप में संग्रहीत छवि को पुनः प्राप्त करें

  5. mysql n अंतिम पंक्तियों में से चुनें