获取每个不同列值的最后一个条目

时间:2015-09-18 01:06:18

标签: sql psql

说我有一个看起来像这样的表:

id | type | amount
------------------
1  | red  | 2
2  | blue | 71
3  | red  | 4
4  | blue | 11
5  | red  | 9
6  | blue | 16

我想编写一个查询,为type的最后一个不同值返回*。在这种情况下,typeblue的最后一行,以及typered的最后一行。所以它会回归:

id | type | amount
------------------
5  | red  | 9
6  | blue | 16

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用子查询查找某个类型的max ID,并在主表中找到join

Fiddle with sample data

select id, t.type, amount
from (select max(id) as maxid, type from tablename group by type) x
join tablename t on t.id = x.maxid and t.type = x.type

答案 1 :(得分:1)

在Postgres中执行此操作的一种简单方法是使用distinct on

select distinct on (type) id, type, amount
from table
order by type, id desc;