Colonel Sponsz
Colonel Sponsz

Reputation: 1721

Selecting a maximum order number in SQL

I have a table that records a sequence of actions with a field that records the sequence order:

user    data    sequence
1       foo     0
1       bar     1
1       baz     2
2       foo     0
3       bar     0
3       foo     1

Selecting the first item for each user is easy enough with WHERE sequence = '0' but is there a way to select the last item for each user in SQL?

The result I am after should look like this:

user    data    sequence
1       baz     2
2       foo     0
3       foo     1

I'm using MySQL if there are any implementation specific tricksters answering.

Upvotes: 3

Views: 2793

Answers (2)

plucka
plucka

Reputation: 11

select top 1 
       user
       ,data
       ,sequence
 from table
order
   by sequence

Upvotes: 0

Keith
Keith

Reputation: 155692

This sql will return the record with the highest sequence value for each user:

select a.user, a.data, a.sequence
from table as a
    inner join (
        select user, max(sequence) as 'last'
        from table 
        group by user) as b
    on a.user = b.user and 
       a.sequence = b.last

Upvotes: 5

Related Questions