एक सरल उपाय यह है कि क्वेरी को 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