mysql - 对从 ActiveRecord 返回的结果强制排序

标签 mysql ruby-on-rails ruby-on-rails-3 ruby-1.9.3

我有以下数组(例如):

array = [234,675,11,233,99]

我然后运行类似以下 ActiveRecord 查询的内容:

User.where(id: array)

返回的数组将随机排序。

但是,我希望返回的结果基于原始数组的顺序(即 id=234 为第一个,id=99 为最后一个)。

我可以在数组上循环并触发 5 个单独的查询,有更好的方法吗?

最佳答案

重复:

ActiveRecord.find(array_of_ids), preserving order

所以基本上代码应该是:

User.find(ids).order("field(id, #{ids.join(',')})")

关于mysql - 对从 ActiveRecord 返回的结果强制排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15053062/

相关文章:

mysql密码错误并关闭

php - 如何在网络开发中提升自己?

ruby-on-rails - 库类方法不被 rails 加载

sql - postgres - SELECT/GROUP BY 中的部分列 - 列必须出现在 GROUP BY 子句中或用于聚合函数

php - 在Mysql中调用存储过程

mysql - 使用二进制排序规则有什么影响?

ruby-on-rails - rails : How do I require ActiveSupport's rescue_from method?

mysql - 将 CSV 数据解析到 Activerecord(MySQL) 太慢并且需要几个小时

ruby-on-rails - 使用 Carrierwave (HTML5) 一次将多个文件上传到 Rails 应用程序

ruby-on-rails - 如果 Rails 查询中存在关联,则包含关联