我有一个搜索功能,基本上运行模型记录的有序列表。问题是每当我打电话时.search.limit(5)
,结果的顺序与我调用时的顺序不同.search
这是我的一些方法
def self.search(server_name, pvp_type)
if server_name.nil?
result = Rom::Leaderboard.order('pvp_vs desc, win_percent desc').limit(200)
end
end
当我打电话时
Rom::Leaderboard.search(nil, 2).pluck(:actor_name)
SQL翻译:
SELECT "rom_leaderboards"."actor_name" FROM "rom_leaderboards" WHERE "rom_leaderboards"."pvp_type" = 2 ORDER BY pvp_vs desc, win_percent desc LIMIT 200
我得到以下结果:
[Zarglon, Lirav, adf, sdfa, Nonad, ...]
扎格隆和利拉夫有相同的pvp_vs
& win_percent
属性值; afd、sdfa 和 Nonad 也有同样的关系。
现在当我打电话时
Rom::Leaderboard.search(nil, 2).limit(5).pluck(:actor_name)
SQL翻译:
SELECT "rom_leaderboards"."actor_name" FROM "rom_leaderboards" WHERE "rom_leaderboards"."pvp_type" = 2 ORDER BY pvp_vs desc, win_percent desc LIMIT 5
我得到以下结果:
[Lirav, Zarglon, sfda, Nonad, adf]
这些查询都是正确的(因为搜索返回基于pvp_vs & win_percent
并且两个列表的顺序都正确)。但我希望它们是一样的。由于某种原因 limit 改变了这个顺序。有办法让它们保持相同吗?