Както е споменато в коментарите към отговора на Робин
, този подход е ненадежден, тъй като MySQL не гарантира, че винаги ще връща най-новото състояние от всяка група. Вместо това трябва да присъедините вашата таблица с подзаявка, която избира най-новото състояние (въз основа на 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
Имайте предвид, че ако потребителят има множество актуализации на състоянието с една и съща addedDate
, сървърът ще върне всички тях (докато заявката на Робин ще върне неопределена); ако имате нужда от контрол върху такава ситуация, ще трябва да дефинирате как да определите коя такава актуализация на състоянието трябва да бъде избрана.