基于另一列的唯一查询

时间:2014-05-28 00:24:12

标签: ruby-on-rails activerecord

所以,我想根据另一栏的单一性来获得一堆ID。

[1,'A']
[2,'B']
[3,'C']
[4,'A']

我想返回[1,2,3](因为' A'不再是唯一的)而失去了第4名。我已尝试.select('DISTINCT letter, id')和某些分组,但我似乎无法获得它。

我的数据库是PostgreSQL。 SQL或ActiveRecord很好。

1 个答案:

答案 0 :(得分:0)

可能不是最好的解决方案,但它适用于Postgres。

Model.select("min(id) as id, letter").group(:letter).map(&:id)

修改 实际上,我找到了一个更好的(读取:更短)解决方案。

Model.group(:letter).pluck("min(id)")

另一个编辑: 我找到了一种无需聚合(最小或最大)的解决方案。

Model.select("distinct on (letter) letter, id").map(&:id)