我有一个应用程序以随机顺序返回列表中的一堆记录,并带有一些分页。为此,我保存了种子值(以便刷新页面将再次以相同的顺序返回列表),然后使用.order('random()')
。
但是,假设在100条记录中,我有10条记录的preferred_level = 1
,而所有其他90条记录都有preferred_level = 0
。
我是否可以通过某种方式将preferred_level = 1
记录放在首位,但仍将所有内容随机化?
例如,我有[A,1],[X,0],[Y,0],[Z,0],[B,1],[C,1],[W,0]
,我希望我能找回像[B,1],[A,1],[C,1],[Z,0],[X,0],[Y,0],[W,0]
这样的东西。
请注意,即使是preferred_level = 1
的人也会随机化,只是他们来到所有0
记录之前。从理论上讲,如果我要添加它们,我希望在preferred_level = 2
记录之前放置1
的任何解决方案。
我曾希望它与Model.all.order('random()').order('preferred_level DESC')
一样直观简单,但似乎并非如此。第二顺序似乎不会影响任何事情。
任何帮助将不胜感激!
答案 0 :(得分:0)
这使我在一个非常类似的问题上完成了工作。
select * from table order by preferred_level = 1 desc, random()
或者我猜Rails方式
Model.order('preferred_level = 1 desc, random()')