是否可以构建像这样的范围
User.where(:id => [5,4,3,2,7,1000] )
在某种程度上,
a)结果按照传递的ID的顺序排列。 (这是一个简单的部分,因为您只需加载记录,并相应地对结果进行排序)
b)结果不是数组而是范围本身(棘手的部分;)
更新:欢迎仅适用于MySQL的解决方案。
答案 0 :(得分:1)
我可以想到两种方法:
(1)在数据库中放置一个订单栏。
(2)使用原始SQL和自定义ORDER BY子句,如下所示:
order by (
case id
when 5 then 0
when 4 then 1
when 3 then 2
when 2 then 3
when 7 then 4
when 1000 then 5
end
)
我不确定它有多便携。
答案 1 :(得分:0)
不同的数据库以不同的方式保存他们的数据,因此没有人能够确定地回答它的范围。
但是如果你真的挑战这个问题,为什么不使用原始SQL,选择每个元组并在构造一个长SQL查询时将它与union合并。