如何从postgres表中获取下一个唯一行

时间:2015-05-15 10:12:27

标签: postgresql

假设我的表包含两列" id" (类型是字符变化(22))和"时间" (类型是没有时区的时间戳)。

现在我在表格中有一些数据如下,

id        time
P001     2015-02-04 10:00:00
P002     2015-02-04 10:00:00
P003     2015-02-04 10:00:00
P004     2015-02-04 10:10:00
P005     2015-02-04 11:00:00

获取第一行的查询将是:

select * from <tablename> order by time, id limit 1;

在此之后,将获得具有id值的下一行的查询&#34; P002&#34;

1 个答案:

答案 0 :(得分:1)

一般情况下你会用偏移来做,但是如果在time, id上有一个索引,你可以对数据库稍微提高一些效率(如果你有数百万行,那么真的很明显)。

标准解决方案:

select * from <tablename>
order by time, id limit 1 offset 1;

索引(通常更快)的解决方案:

select * from <tablename>
where time >= '2015-02-04 10:00:00' and id > 'P001'
order by time, id limit 1;