Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我可以按预定顺序加载ActiveRecord对象吗?_Mysql_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Mysql 我可以按预定顺序加载ActiveRecord对象吗?

Mysql 我可以按预定顺序加载ActiveRecord对象吗?,mysql,ruby-on-rails,ruby,activerecord,Mysql,Ruby On Rails,Ruby,Activerecord,可以这样构造一个作用域吗 User.where(:id => [5,4,3,2,7,1000] ) 在某种程度上,那 a) 结果按传递的ID的顺序排列。(这是一个简单的部分,因为您可以加载记录,并相应地对结果进行排序) b) 结果不是一个数组,而是一个作用域本身(棘手的部分;) 更新:只在MySQL上工作的解决方案是受欢迎的。不同的数据库以不同的方式保存它们的数据,因此没有人能够确定数据的范围 但是,如果您真的要挑战这个问题,为什么不使用原始SQL,请选择每个元组并将其与union合并,

可以这样构造一个作用域吗

User.where(:id => [5,4,3,2,7,1000] )
在某种程度上,那

a) 结果按传递的ID的顺序排列。(这是一个简单的部分,因为您可以加载记录,并相应地对结果进行排序)

b) 结果不是一个数组,而是一个作用域本身(棘手的部分;)


更新:只在MySQL上工作的解决方案是受欢迎的。

不同的数据库以不同的方式保存它们的数据,因此没有人能够确定数据的范围


但是,如果您真的要挑战这个问题,为什么不使用原始SQL,请选择每个元组并将其与union合并,同时构造一个长SQL查询。

我可以想出两种方法:

(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
)

我不确定它的便携性。

哪个数据库?mysql具有按字段排序的功能。你想要一个可移植的解决方案吗?解决方案(2)在MySQL和SQLite3中工作。。。对我来说已经够好了!