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