postgresql,奇数偏移/限制行为(记录顺序)

postgresql,奇数偏移/限制行为(记录顺序),sql,ruby-on-rails,postgresql,activerecord,sql-order-by,Sql,Ruby On Rails,Postgresql,Activerecord,Sql Order By,所以基本上我有这个作用域(sql): 不知何故,上述查询的记录顺序与没有限制和偏移的相同查询的记录顺序不同: scope[6] => #<Offer id: 8629 ... scope.except(:offset, :limit)[6] => #<Offer id: 8729 ... 范围[6] =>##关系数据库是基于集合的,因此本质上是无序的;结果集中记录的顺序仅由order by子句指定。如果ORDER BY子句中的表达式有两行相同的值,那么运行两次相

所以基本上我有这个作用域(sql):

不知何故,上述查询的记录顺序与没有限制和偏移的相同查询的记录顺序不同:

   scope[6]
=> #<Offer id: 8629 ...

scope.except(:offset, :limit)[6]
=> #<Offer id: 8729 ...
范围[6]

=>##关系数据库是基于集合的,因此本质上是无序的;结果集中记录的顺序仅由order by子句指定。如果ORDER BY子句中的表达式有两行相同的值,那么运行两次相同的查询可能会返回位于不同位置的那些行;通过添加LIMIT和OFFSET来更改查询只会使情况变得更糟,因为它更可能导致不同的顺序

如果希望数据库按特定顺序提供行,则必须在ORDERBY子句中完全指定顺序。您必须在您的范围内为
订单
调用添加更多内容:

...order('offers.discount desc, offers.created_at asc')

或者类似的东西,取决于您需要的特定顺序。

关系数据库是基于集合的,因此本质上是无序的;结果集中记录的顺序仅由order by子句指定。如果ORDER BY子句中的表达式有两行相同的值,那么运行两次相同的查询可能会返回位于不同位置的那些行;通过添加LIMIT和OFFSET来更改查询只会使情况变得更糟,因为它更可能导致不同的顺序

如果希望数据库按特定顺序提供行,则必须在ORDERBY子句中完全指定顺序。您必须在您的范围内为
订单
调用添加更多内容:

...order('offers.discount desc, offers.created_at asc')
或者类似的东西,取决于你需要的具体顺序