说我有一个看起来像这样的表:
id | type | amount
------------------
1 | red | 2
2 | blue | 71
3 | red | 4
4 | blue | 11
5 | red | 9
6 | blue | 16
我想编写一个查询,为type
的最后一个不同值返回*。在这种情况下,type
为blue
的最后一行,以及type
为red
的最后一行。所以它会回归:
id | type | amount
------------------
5 | red | 9
6 | blue | 16
我该怎么做?
答案 0 :(得分:1)
您可以使用子查询查找某个类型的max
ID,并在主表中找到join
。
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;