2011-04-30 80 views
0

当我通过created_at(时间戳)进行排序并限制结果数时,我的postgresql数据库保持返回相同的最后一行。每当我按时间戳排序时返回相同的行

最后的结果始终是同一行。看看这些结果中的最后一个ID:

looked=# select id,created_at from businesses order by created_at asc limit 2; 
id |   created_at 
----+------------------------------- 
38 | 2011-04-30 18:31:23.923475+10 
20 | 2011-04-30 18:31:23.923475+10 
(2 rows) 

looked=# select id,created_at from businesses order by created_at asc limit 5; 
id |   created_at 
------+------------------------------- 
38 | 2011-04-30 18:31:23.923475+10 
436 | 2011-04-30 18:31:23.923475+10 
1334 | 2011-04-30 18:31:23.923475+10 
2845 | 2011-04-30 18:31:23.923475+10 
20 | 2011-04-30 18:31:23.923475+10 
(5 rows) 

looked=# select id,created_at from businesses order by created_at asc limit 10; 
id |   created_at 
------+------------------------------- 
38 | 2011-04-30 18:31:23.923475+10 
436 | 2011-04-30 18:31:23.923475+10 
1334 | 2011-04-30 18:31:23.923475+10 
2845 | 2011-04-30 18:31:23.923475+10 
3381 | 2011-04-30 18:31:23.923475+10 
1089 | 2011-04-30 18:31:23.923475+10 
822 | 2011-04-30 18:31:23.923475+10 
2310 | 2011-04-30 18:31:23.923475+10 
1773 | 2011-04-30 18:31:23.923475+10 
20 | 2011-04-30 18:31:23.923475+10 
(10 rows) 
+1

...和问题? – gbn 2011-04-30 09:49:47

+0

所有created_at都一样! – Nighil 2011-04-30 09:57:22

+0

这些值是相同的,因为它是我的种子数据,并且我选择将所有created_at值设置为NOW()。有没有更好的办法? – 2011-04-30 10:13:09

回答

1

全部created_at值都是一样的。在ORDER BY和LIMIT将任意挑行由行的集合,其中created_at最低值

你必须添加一个额外的排序条件为“抢七”这些行。这里我添加了id

select id,created_at from businesses 
order by created_at asc, id limit 5; 
+0

谢谢,效果很好。 – 2011-04-30 10:13:43

1

每行的created_at值是相同的。 Postgres正在任意打破关系。如果您需要更多控制/可预测性,请添加其他订购条件(如ID)。

相关问题