首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Rails ActiveRecord的last方法按id排序,而first不按id排序?

问为什么Rails ActiveRecord的last方法按id排序,而first不按id排序?
EN

Stack Overflow用户
提问于 2012-05-03 14:40:09
回答 2查看 1.2K关注 0票数 4

根据this的说法,ActiveRecord first生成SQL:

代码语言:javascript
复制
SELECT * FROM clients LIMIT 1

而ActiveRecord last会生成SQL:

代码语言:javascript
复制
SELECT * FROM clients ORDER BY clients.id DESC LIMIT 1

根据我的观点,在first上的行为是不正确的,而在last上是正确的。如果不指定顺序,简单的SELECT将以任意或不可预测的顺序返回。因此,first不保证总是返回相同的记录(如果不是具有最小id的记录)。

有没有人知道为什么Rails ActiveRecord是这样工作的?

提前感谢Panayotis

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-04 15:11:22

因为我在这篇文章中没有得到任何答案,所以我试着在其他论坛上从其他人那里寻找答案。我认为ActiveRecord (或mysql gem)都有一个bug。Rick James说,如果我们想要获得最小id,我们应该使用order by with limit。Here is his answer

http://forums.mysql.com/read.php?22,530328,530514#msg-530514

票数 1
EN

Stack Overflow用户

发布于 2012-05-03 16:49:45

我认为这不是法律上的规则,而是事实上的规则。在未指定排序的情况下,大多数DB按创建顺序(按其id的顺序)返回表的内容。它就是这样的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10426352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档