2015-12-21 106 views
0

SELECT id, created_at FROM "location_reviews" ORDER BY created_at DESC;PostgreSQL的顺序通过,并限制不返回预期的行

id |  created_at 
-----+--------------------- 
251 | 2015-12-20 00:00:00 
426 | 2015-12-20 00:00:00 
357 | 2015-12-20 00:00:00 

SELECT id, created_at FROM "location_reviews" ORDER BY created_at DESC LIMIT 1;

id |  created_at 
-----+--------------------- 
251 | 2015-12-20 00:00:00 

SELECT id, created_at FROM "location_reviews" ORDER BY created_at DESC LIMIT 1 OFFSET 1;

id |  created_at 
-----+--------------------- 
251 | 2015-12-20 00:00:00 

SELECT id, created_at FROM "location_reviews" ORDER BY created_at DESC LIMIT 1 OFFSET 2;

id |  created_at 
-----+--------------------- 
357 | 2015-12-20 00:00:00 

为什么我的OFFSET 1查询返回第二个条目(id = 426)?相反,它返回的查询没有OFFSETcreated_at列的类型为timestamp without time zone

回答

1

看起来created_at在这些行中具有相同的值。在这种情况下,您应该在ORDER BY中添加另一个字段。否则,行为没有定义 - PostgreSQL可以根据需要对它们进行排序。