2009-11-16 3 views
0

Есть группы, подобные этому;Как использовать запрос select для получения наименьшего значения для каждого уникального второго значения?

USER_ID SEQ_ID NAME 
1  2  Armut 
1  3  Elma 
1  4  Kiraz 
2  1  Nar 
2  2  Uzum 
4  3  Sheftali 
4  4  Karpuz 
4  5  Kavun 

После выбора запроса я хочу видеть только;

USER_ID SEQ_ID NAME 
1  2  Armut 
2  1  Nar 
4  3  Karpuz 

То есть, я хочу, чтобы строка с наименьшим значением SEQ_ID для каждого USER_ID. Какой SQL-запрос даст мне этот результат?

С наилучшими пожеланиями

+0

Что это? Случайный SEQ_ID для каждого отдельного USER_ID? – Joey

+3

Опишите немного больше. Каков шаблон здесь. Это кулак пользователя один и два, но второй из четырех пользователей. – idstam

+0

(1) Домашнее задание? (2) Можете ли вы, по крайней мере, по тексту (если не использовать SQL) описать, как была создана таблица результатов? – Stephan202

ответ

4

кажется мне, как это должно быть:

SELECT USER_ID, MIN(SEQ_ID) AS SEQ_ID, NAME 
FROM table 
GROUP BY USER_ID, NAME 
ORDER BY USER_ID; 
+1

Это не работает для группы с USER_ID 4. Наименьшим значением SEQ_ID будет 3. – Joey

+0

@Greg: powertip - текст отступа с четырьмя пробелами, чтобы он был отформатирован как код. Нажав оранжевый вопросительный знак, который вы видите на панели инструментов, когда вы отправляете сообщение в документ, описывающий это и другое форматирование. – outis

+0

Для справки, вот документ: http://stackoverflow.com/editing-help – outis

9
SELECT USER_ID, SEQ_ID, NAME 
    FROM table 
    WHERE NAME IN ('Armut', 'Nar', 'Karpuz') 
    ORDER BY USER_ID 

Если у вас есть что-то другое в виду, пожалуйста, уточнить ваш вопрос.

+5

Nice. Здесь есть бритва Оккама. – Manu

+0

За исключением того, что сначала я ошибся. Забыл предложение 'ORDER BY'. – outis

Смежные вопросы