Zoals vermeld in de opmerkingen bij Robin's antwoord
, is die benadering onbetrouwbaar omdat MySQL niet garandeert dat het altijd de meest recente status van elke groep zal retourneren. U moet in plaats daarvan uw tabel samenvoegen met een subquery die de meest recente status selecteert (op basis van 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
Merk op dat als een gebruiker meerdere statusupdates heeft met dezelfde addedDate
, de server zal ze allemaal teruggeven (terwijl Robin's vraag een onbepaald antwoord zou geven); als u controle over een dergelijke situatie wilt, moet u bepalen hoe u bepaalt welke statusupdate moet worden geselecteerd.