Postgres通过以下方式获得组的第一项

时间:2018-11-18 16:05:37

标签: database postgresql greatest-n-per-group

我已经看到类似的问题,但是似乎没有一个问题涵盖我要构建的查询。

我有一个到服务器的请求日志数据库,其中包括入站和出站连接,我正在尝试为每个请求获取日志中的第一项。

数据库看起来像这样: id,requestid,时间戳,消息

我想按requestid分组,但是从每个requestid中获取最低的ID,这将是请求的第一个日志项。

我发现类似的请求可以按requestid分组,然后按requestid分组,但这并不能满足我的要求。我尝试添加orderby requestid,id,但这也将id 2作为返回的第一项。

这是我最近来过的: 从日志中选择id,requestid,其中id限制(从(按id从日志中选择id,requestid,按id依次选择)中的(requestid)id选择为foo),按id限制5; 但是返回的第一项是ID 2,而不是ID 1。

任何有关此的技巧都将非常有帮助,谢谢。

1 个答案:

答案 0 :(得分: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