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
chỉnh sửa Điều này có thể hoạt động tốt hơn, tùy thuộc vào RDBMS bạn đang sử dụng và kích thước của tập dữ liệu. Hãy thử cả hai và so sánh.
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