具有不同列的随机顺序

时间:2015-06-27 05:34:30

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

我正在创建一个涉及多个连接的查询,这会导致一些重复

@users = User.joins(...).where(...).select("users.id")

根据该结果,我想制作记录distinctRANDOM()订单

我无法用activerecord重新创建它。

使用SQL,它看起来像

SELECT DISTINCT users.*
from ( long complex query)
ORDER BY RANDOM()

1 个答案:

答案 0 :(得分:1)

最简单的事情之一,而不是在任何框架中构建复杂的查询,是使用标准SQL构建复杂查询,然后将其包装在视图中:

CREATE VIEW complex_stuff AS
  SELECT DISTINCT users.*
  FROM ( long complex query)
  ORDER BY RANDOM();

视图成为一个简单的实体或类,您可以从中拉出所需的列,可能会按某些列(SELECT a, b, c FROM complex_stuff WHERE d = ?)进行过滤。