Seperti yang disebutkan dalam komentar untuk Jawaban Robin
, pendekatan itu tidak dapat diandalkan karena MySQL tidak menjamin bahwa ia akan selalu mengembalikan status terbaru dari setiap grup. Anda harus bergabung dengan tabel Anda dengan subquery yang memilih status terbaru (berdasarkan addedDate
).
SELECT *
FROM status
NATURAL JOIN (
SELECT userID, MAX(addedDate) as addedDate
FROM status
GROUP BY userID
) AS mostRecent
ORDER BY addedDate DESC
LIMIT 10
Perhatikan bahwa jika pengguna memiliki beberapa pembaruan status dengan addedDate
yang sama , server akan mengembalikan semuanya (sedangkan kueri Robin akan mengembalikan yang tidak pasti); jika Anda memerlukan kendali atas situasi seperti itu, Anda perlu menentukan bagaimana seseorang menentukan pembaruan status mana yang harus dipilih.