如何首先按现有布尔属性排序结果

时间:2012-09-21 04:35:13

标签: ruby-on-rails activerecord

我有许多带有featured?属性的记录。

我想查询所有内容,将它们分组为特色和非特色,如果可能的话,在它们的组之间随机分组(随机显示特色组,然后随机显示)。

知道如何在ActiveRecord上执行此操作吗?

1 个答案:

答案 0 :(得分:5)

使用rand()

的MySQL

SELECT * FROM <TABLE_NAME> ORDER BY featured?, rand()

RAILS 3

ModelName.order("featured, rand()")

对于Ex: -

id    featured
1      true
2      false
3      false
4      true
5      false
6      true

我希望所有的特征值首先为真,然后为假,但是具有真假组的记录的顺序应该是随机的

所以我的代码将是

User.order("featured DESC, rand()")

并生成o / p是(注意: - 可以更改组true / false之间的记录顺序)

id    featured
4      true
6      true
1      true
5      false
3      false
2      false