2011-06-23 30 views
0

限制结果,我有以下表格:SQL - 在群体

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试图+进行限制,HAVING,GROUP BY ....但它随时添加,我并不需要额外的行(我要迭代结果集以创建子结果)。

你有什么想法我可以做到这一点?

非常感谢您的帮助提示!

Kheraud

+1

1991年的蓝色梅赛德斯比1996年的蓝色梅赛德斯更“近期”是怎么样的?我不关注你如何分组结果... – Yuck

+0

同意 - 示例不正确... – Randy

+0

你的意思是“最古老”而不是“更近”?如果两辆不同颜色的汽车都来自同样更新的(或更旧的或者真实的标准),那么结果应该是什么? – Josh

回答

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 
0

选车,颜色,最大(年)从table_name的 组由汽车,颜色