sql >> Databáze >  >> RDS >> Mysql

Seskupit podle uživatelů a zobrazit nejnovější v MYSQL nefunguje

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.



  1. ROWID (oracle) - nějaké využití?

  2. vrátit data group_concat jako pole

  3. Jak vrátit více hodnot v jednom sloupci (T-SQL)?

  4. Mysql v PHP - jak aktualizovat pouze jeden řádek v tabulce, ale s největším ID číslem