<p>I have a table that records a sequence of actions with a field that records the sequence order:</p>

<pre><code>user    data    sequence
1       foo     0
1       bar     1
1       baz     2
2       foo     0
3       bar     0
3       foo     1
</code></pre>

<p>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?</p>

<p>The result I am after should look like this:</p>

<pre><code>user    data    sequence
1       baz     2
2       foo     0
3       foo     1
</code></pre>

<p>I'm using MySQL if there are any implementation specific tricksters answering.</p>

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
```
```