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

MySQL Group efter ID og Seneste DateTime

Jeg tror, ​​at med nedenstående kan du opnå det, du har brug for. Disse operationer er såkaldte "Gruppemæssigt maksimum".

Mulighed 1

Dette er det nemmeste at forstå, en underforespørgsel vil returnere maksimalt TID for alle brugere siden max bruges sammen med Grupper efter og så laver vi en anden forespørgsel for at få alle data for disse ID'er.

 Vælg TID, TData, TUserID, TViewedAt Fra Test Hvor TID In( Vælg Max(TID) Fra Test Group By TUserID) 

Mulighed 2

Lidt mere kompliceret at forstå, men højst sandsynligt mere effektivt. Dette virker på grundlag af, at når t1.TViewedAt er på sin maksimale værdi, er der ingen t2.TViewedAt med en større værdi, og værdierne for t2 rækker vil være NULL .

VÆLG t1.TID, t1.TData, t1.TUserID, t1.TViewedAtFROM Test t1LEFT JOIN Test t2 PÅ t1.TUserID =t2.TUserID OG t1.TViewedAt

Resultat

TID TData TUserID TViewedAt4 test3 123 2012-10-05 00:00:00.0005 test2 213 2012-10-03 00:00:00.000 


  1. phpMyAdmin på MySQL 8.0

  2. Forkert heltalsværdi:'' for kolonne 'id' i række 1

  3. Oracle SQL-forespørgsel til liste over alle skemaer i en DB

  4. Host xxxx har ikke tilladelse til at oprette forbindelse til denne MySQL-server