4

据此 ActiveRecordfirst生成 SQL:

SELECT * FROM clients LIMIT 1

而 ActiveRecordlast生成 SQL:

SELECT * FROM clients ORDER BY clients.id DESC LIMIT 1

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

有谁知道,为什么 Rails ActiveRecord 会这样工作?

在此先感谢帕纳约蒂斯

4

2 回答 2

1

由于我在这篇文章上没有得到任何答案,我试图从其他论坛上的其他人那里找到答案。我相信 ActiveRecord(或 mysql gem)都有一个错误。Rick James 说如果我们想得到最小的 id,我们应该使用 order by 和 limit。这是他的回答

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

于 2012-05-04T07:11:21.773 回答
0

我认为这不是法律上的,而是事实上的规则。如果未指定排序,大多数 DB 按创建顺序(因此按其 id 的顺序)返回表的内容。它只是工作。

于 2012-05-03T08:49:44.523 回答