Som nævnt i kommentarerne til Robins svar
, den tilgang er upålidelig, fordi MySQL ikke garanterer, at den altid vil returnere den seneste status fra hver gruppe. Du skal i stedet slutte dig til din tabel med en underforespørgsel, der vælger den seneste status (baseret 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
Bemærk, at hvis en bruger har flere statusopdateringer med den samme addedDate
, vil serveren returnere dem alle (hvorimod Robins forespørgsel ville returnere en ubestemmelig); hvis du har brug for kontrol over en sådan situation, bliver du nødt til at definere, hvordan man bestemmer, hvilken sådan statusopdatering der skal vælges.