gpt4 book ai didi

mysql - 简单的 Rails/MySQL 查询生成一个奇怪的结果

转载 作者:行者123 更新时间:2023-12-01 00:51:47 25 4
gpt4 key购买 nike

1.8.7 :011 > User.find(:first).id
User Load (0.4ms) SELECT `users`.* FROM `users` LIMIT 1
=> 1

1.8.7 :012 > User.find(:first, :select => 'id')
User Load (0.3ms) SELECT id FROM `users` LIMIT 1
=> #<User id: 2>

在我这边……我完全糊涂了。它应该为我提供两个查询的用户 ID 1,对吧?我所知道的是数据库中的第一个用户的 ID 为 1,我知道这个“问题/奇怪的结果”与 MySQL 相关。

SELECT * FROM `users` LIMIT 1;
= 1

SELECT id FROM `users` LIMIT 1;
= 2

SELECT id FROM `users` ORDER BY id ASC LIMIT 1;
= 1

最佳答案

选择的结果在您明确排序之前不会排序。没有特定的“第一个”记录,除非您添加一个 ORDER BY 子句告诉它应该根据哪个标准将记录视为“第一个”。

特别是在 Ruby 中,.first 方法(或 find(:first))不会应用任何顺序,因此结果将(基本上)是随机的。如果需要“第一条”记录每次都相同,则需要对结果进行排序:

User.order(:id).first

这(有点奇怪)与 .last 方法形成对比,后者自动应用 order(:id)

关于mysql - 简单的 Rails/MySQL 查询生成一个奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com