【发布时间】:2013-01-23 04:28:31
【问题描述】:
我刚刚将我的应用程序从 MySQL 转换为 Postgres。以前,对 .all 的请求会按 id 顺序返回所有行。在 Postgres 上,行被乱序返回。同样,
Person.first
以前返回id为1的记录,现在有时返回另一个记录。
如果我添加这样的订单子句:
Person.order("id").first
查询成功并返回第一行。这是预期的行为吗?
【问题讨论】:
-
“让我觉得恶心”有一个已知的排序(从你的应用程序中删除一个错误)与随机排序(并保留错误)???
-
MySQL 默认按 id 排序。这是一个合理的假设。
-
我认为 InnoDB 按主键排序是其实现的副作用。其他存储引擎的行为不同,我不确定 Oracle 是否会保证将来的顺序保持不变。 SQL 标准非常清楚结果集的顺序是未定义的,除非您明确要求。
-
好的,很公平。如果我修改问题,您会否决否决票?
标签: mysql ruby-on-rails postgresql rails-activerecord