Jak je uvedeno v komentářích k Robinově odpovědi
, tento přístup je nespolehlivý, protože MySQL nezaručuje, že vždy vrátí nejnovější stav z každé skupiny. Místo toho musíte tabulku připojit pomocí dílčího dotazu, který vybere nejnovější stav (na základě 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
Všimněte si, že pokud má uživatel více aktualizací stavu se stejným addedDate
, server je vrátí všechny (zatímco Robinův dotaz by vrátil neurčitý); pokud potřebujete kontrolu nad takovou situací, budete muset definovat, jak se určí, která taková aktualizace stavu by měla být vybrána.