Som nämnts i kommentarerna till Robins svar
, det tillvägagångssättet är opålitligt eftersom MySQL inte garanterar att det alltid kommer att returnera den senaste statusen från varje grupp. Du måste istället gå med i din tabell med en underfråga som väljer den senaste statusen (baserat på 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
Observera att om en användare har flera statusuppdateringar med samma addedDate
, kommer servern att returnera dem alla (medan Robins fråga skulle returnera en obestämd); om du behöver kontroll över en sådan situation måste du definiera hur man avgör vilken sådan statusuppdatering som ska väljas.