SELECT id, authorId, answer, votes
FROM ( SELECT id, authorId, answer, votes
FROM answers
ORDER BY votes DESC) AS h
GROUP BY authorId
यह छोटी सी साफ-सुथरी ट्रिक GROUP BY
. के आधार पर बनाई गई है प्रत्येक मामले की पहली पंक्ति को पुनः प्राप्त करने के लिए। आमतौर पर यह डिफ़ॉल्ट रूप से होता है ORDER BY id ASC
, लेकिन इस उप क्वेरी के माध्यम से, प्रत्येक authorId
. में पहली पंक्ति उच्चतम votes
. के साथ ।
नोट: जैसा कि इयान एल्डर ने उल्लेख किया है, यह समाधान ONLY_FULL_GROUP_BY
के साथ काम नहीं करता है सक्रिय और केवल MySQL में काम करता है। इस व्यवहार की पुष्टि करने वाले दस्तावेज़ीकरण की कमी के कारण यह समाधान कुछ हद तक असमर्थित है। यह मेरे लिए अच्छा काम करता है और हालांकि हमेशा मेरे लिए अच्छा काम करता है।
यह विधि अभी भी नवीनतम MySQL on sqlfiddle पर काम करती है। ।