我见过与此类似的问题,但似乎没有一个能完全涵盖我要构建的查询。
我有一个服务器请求日志的数据库,其中包括入站和出站连接,我正在尝试获取每个请求的日志中的第一项。
数据库看起来有点像这样: id, requestid, timestamp, message
我想按 requestid 分组,但从每个 requestid 中获取最小的 id,这将是请求的第一个日志项。
我发现了类似的请求,先按请求 ID 分组,然后按请求 ID 排序,但这并没有满足我的要求。我尝试通过 requestid、id 添加 orderby,但这也将 id 2 作为返回的第一个项目。
这是我最接近的: select id, requestid from logs where id in (select distinct on (requestid) id from (select id, requestid from logs order by id) as foo) order by id 限制 5; 但返回的第一项是 id 2,而不是 id 1。
关于此的任何提示都会非常有帮助,谢谢。
最佳答案
您可以通过请求 ID 在组上使用内部联接
select id, requestid, timestamp, message
from logs
inner join (
select min(id) as min_id , requestid
from logs
group by requestid
) t on t.min_id = logs.id and t.requestid = logs.requestid
关于database - Postgres 通过以下方式获得组中的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362858/