从rails 5获取随机记录,但保留一条记录(基于某些值)

时间:2017-06-21 06:21:38

标签: sql ruby-on-rails postgresql rails-activerecord

我有一个问题表。它有一个虚拟的问题,我想随机得到问题,但是在返回的ActiveRecord集合中,这个问题总是应该是最重要的。我可以使用Random()函数随机购买记录,该函数工作正常,但虚拟问题也有随机位置,我不想要,我希望它在第一个位置。任何解决方案都会有所帮助。

问题表栏:id, statement, answer 虚拟问题有空白的陈述。

我正在使用

查询
Question.all.order("Random()") 

我正在使用PostgreSQL。

1 个答案:

答案 0 :(得分:2)

第一个选项:

offsetof(ABC,:b)

第二个选项:

select_clause = "(CASE WHEN (statement = '') THEN 0 ELSE Random() END) as dummy, questions.*"
Question
  .select(select_clause)
  .order('dummy')

修改select_clause = "(statement <> '') as dummy, questions.*" Question .select(select_clause) .order('dummy, Random()') 在两个选项中都不应包含NULL