如何从单个列中选择唯一值,使用默认范围,返回多个列

时间:2014-10-06 15:40:25

标签: sql ruby-on-rails postgresql arel

在rails应用程序中,我需要返回一个包含多个列的ActiveRecord集合,但只有一列必须是唯一的。默认范围不是唯一值。

默认范围

default_scope { order('executed_at DESC') }

当前查询没有唯一:条款。

Search.where(organization_id: @my_array_of_ids)
      .executed_after(from_date_time)
      .limit(100)
      .pluck(:terms)

executed_after(from_date_time)也是一个范围。如何在不使用.uniq方法的情况下更改上述查询以返回唯一的术语?我希望这是一个单独的SQL语句。

1 个答案:

答案 0 :(得分:0)

我也发现了这个:

Convert SQL query to Active Record query in Rails 4

注意Model.distinct(:column)

编辑:

我猜它是这样的,但我需要更多信息:

Search.distinct(:terms).select(:executed_at)
.where(organization_id: @my_array_of_ids)
  .executed_after(from_date_time)
  .limit(100)
  .group(:executed_at)
相关问题