2015-05-15 28 views
-1

的表中提取想我的表包含兩列「ID」(類型是字符改變(22))和「時間」(類型是無時區的時間戳)。如何在下一個唯一行從Postgres的

現在我已經在表中的一些數據如下,

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值「P002」

+0

'offset':http://www.postgresql.org/docs/current/static/queries-limit .html –

+0

感謝您的快速回復。但是我不能在這裏使用偏移,原因有兩個:首先,我們可以按照相反的順序顯示數據,第二個數據隨機添加到表中。 –

+0

您可以在不使用偏移量的情況下取消查詢嗎? –

回答

1

通常你會這樣做與偏移量,但如果有一個索引time, id你可以做到稍微更有效的數據庫(onl如果你擁有數百萬行,那麼你真的可以知道)。

標準溶液:

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; 
相關問題