2008-10-06 3 views
3

У меня есть таблица, которая записывает последовательность действий с полем, который записывает порядок следования:Выбор максимального количества заказа в SQL

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

Выбор первого элемента для каждого пользователя достаточно легко с WHERE последовательность = '0', но есть ли способ выбрать последний элемент для каждого пользователя в SQL?

В результате я после должен выглядеть следующим образом:

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

Я использую MySQL, если есть какие-либо конкретные реализации обманщики ответить.

ответ

5

Этот SQL возвращает записи с наивысшим значением последовательности для каждого пользователя:

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 
+0

Хм, я бы ожидал «внутреннее соединение (выберите пользователя, не более (последовательность) как„последний“ из группы таблиц пользователем) как b на a.user = b.user ". По-моему, разные интерпретации вопроса. – ephemient 2008-10-06 14:40:20

+0

epheminent технически правильный (лучший вид правильного). – 2008-10-06 14:48:49

0
select top 1 
     user 
     ,data 
     ,sequence 
from table 
order 
    by sequence 
Смежные вопросы