sql >> Databasteknik >  >> RDS >> Mysql

Gruppera efter användare och visa senaste i MYSQL fungerar inte

Som nämnts i kommentarerna till Robins svar , det tillvägagångssättet är opålitligt eftersom MySQL inte garanterar att det alltid kommer att returnera den senaste statusen från varje grupp. Du måste istället gå med i din tabell med en underfråga som väljer den senaste statusen (baserat 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

Observera att om en användare har flera statusuppdateringar med samma addedDate , kommer servern att returnera dem alla (medan Robins fråga skulle returnera en obestämd); om du behöver kontroll över en sådan situation måste du definiera hur man avgör vilken sådan statusuppdatering som ska väljas.



  1. SQL-serverunion men håll ordning

  2. Ta bort nummer från string sql-server

  3. Räkna Antal konsekutiv förekomst av värden i tabell

  4. Hur hittar man orsaken till dödläget i SQL-servern ro14?