SQL - ограничение результатов по группам - PullRequest
0 голосов
/ 23 июня 2011

У меня есть следующая таблица:

Car      | color    | year
---------+----------+------
mercedes | blue     | 1991
mercedes | yellow   | 1993
mercedes | blue     | 1996
mercedes | red      | 1998
renaud   | blue     | 1991
renaud   | yellow   | 1993
renaud   | blue     | 1996
renaud   | red      | 1998

Я ищу запрос, который позволяет получить самую старую строку года для каждого типа автомобиля. В этом случае это должно дать мне:

Car       | color | year
----------+-------+------
mercedes  | blue  | 1991
renaud    | blue  | 1991

Я пробовал с ORDER BY + LIMIT, HAVING, GROUP BY .... Но он всегда добавляет лишние строки, которые мне не нужны (мне нужно перебрать набор результатов, чтобы создать вспомогательный результат). *

У вас есть идеи, как я могу это сделать?

Большое спасибо за ваши полезные советы!

Kheraud

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

вложенный выбор - что-то вроде этого:

select car, max(year) yr
from mytable
group by car

это дает правильный год для каждого автомобиля. затем вы хотите добавить цвет (не указано, что делать, если в этом году их больше одного) ...

select a.car, a.color, a.yr
from (
select car, max(year) yr
from mytable
group by car
) a
, mytable
where mytable.car = a.car
and mytable.year = a.yr
0 голосов
/ 23 июня 2011

выберите автомобиль, цвет, Макс (год) из таблицы с именем группы по автомобилю, цвет

...