SELECT user.name, user.subject FROM user INNER JOIN ( SELECT name, COUNT(1) AS occurrences FROM user GROUP BY name ) AS user_occurrences ON user.name = user_occurrences.name ORDER BY user_occurrences.occurrences DESC, user.name ASC, user.subject ASC LIMIT 4
संपादित करें आपके द्वारा उपयोग किए जा रहे RDBMS और डेटासेट के आकार के आधार पर यह बेहतर प्रदर्शन कर सकता है। दोनों को आजमाएं और तुलना करें।
SELECT user.name, user.subject FROM user INNER JOIN user AS user_occurrences ON user.name = user_occurrences.name GROUP BY user.name --, user.subject Second GROUP BY not needed on MySQL, but it should logically be there ORDER BY COUNT(user_occurrences.subject) DESC, user.name ASC, user.subject ASC LIMIT 4