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

Raggruppa per utente e mostra l'ultimo in MYSQL che non funziona

Come menzionato nei commenti alla risposta di Robin , tale approccio non è affidabile perché MySQL non garantisce che restituirà sempre lo stato più recente da ciascun gruppo. Devi invece unirti alla tua tabella con una sottoquery che seleziona lo stato più recente (basato su 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

Tieni presente che se un utente ha più aggiornamenti di stato con lo stesso addedDate , il server li restituirà tutti (mentre la query di Robin ne restituirebbe una indeterminata); se hai bisogno di controllare una situazione del genere, dovrai definire come determinare quale aggiornamento di stato deve essere selezionato.