这似乎很简单,但是最近几个小时找不到这个问题的答案。
我有一个表request_state,其中“ id”是主键,它可以有多个具有相同state_id的条目。我想在使用最大日期时间按state_id分组后获取ID。
所以我尝试了这个,但是它给出了错误“ state_id”必须出现在GROUP BY子句中或在聚合函数中使用
select id, state_id, max(datetime)
from request_state
group by id
但是当我使用以下查询时,我得到了多个具有相同state_id的条目。
select id, state_id, max(datetime)
from request_state
group by id, state_id
我的桌子:
id state_id date_time cef 1 Jan 1
ter 1 Jan 2
ijk 1 Jan 3
uuu 2 Feb 1
rrr 2 Feb 2
这就是我想要的结果,
id state_id date_time
__ ________ _________
ijk 1 Jan 3
rrr 2 Feb 2
答案 0 :(得分:1)
您似乎想要:
select max(id) as id, state_id, max(datetime)
from request_state
group by state_id;
如果您想让每个州的datetime
最多的行,请使用distinct on
:
select distinct on (state) rs.*
from request_state rs
order by state, datetime desc;
答案 1 :(得分:1)
尝试此查询:
{{1}}
答案 2 :(得分:1)
您可以使用相关的suqbuery
:
select t.*
from table t
where date_time = (select max(date_time) from table t1 where t1.state_id = t.state_id);