SQL - 限制组的结果

时间:2011-06-23 15:21:56

标签: sql syntax group-by sql-order-by having

我有下表:

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 个答案:

答案 0 :(得分:2)

嵌套选择 - 类似这样:

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

答案 1 :(得分:0)

从table_name中选择car,color,Max(Year) 乘车,颜色