Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selecting a maximum order number in SQL

Tags:

sql

mysql

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.

like image 977
Colonel Sponsz Avatar asked Sep 02 '26 03:09

Colonel Sponsz


1 Answers

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
like image 97
Keith Avatar answered Sep 04 '26 21:09

Keith



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!