Jak wspomniano w komentarzach do odpowiedzi Robina
, takie podejście jest zawodne, ponieważ MySQL nie gwarantuje, że zawsze zwróci najnowszy status z każdej grupy. Zamiast tego musisz dołączyć do tabeli za pomocą podzapytania, które wybiera najnowszy stan (na podstawie 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
Pamiętaj, że jeśli użytkownik ma wiele aktualizacji statusu z tą samą addedDate
, serwer zwróci je wszystkie (podczas gdy zapytanie Robina zwróci nieokreślone); jeśli potrzebujesz kontroli nad taką sytuacją, musisz określić, w jaki sposób określa się, którą aktualizację statusu należy wybrać.