sql >> Database teknologi >  >> RDS >> Mysql

Gruppér efter bruger og vis seneste i MYSQL virker ikke

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.



  1. Python SQLAlchemy - MySQL-serveren er forsvundet

  2. MySQL:Opdater flere kolonner, hvis deres værdi er lig med

  3. SQL-forespørgsel over flere rækker

  4. Sådan oversætter du PostgreSQL merge_db (aka upsert) funktion til MySQL