所以,我想根据另一栏的单一性来获得一堆ID。
[1,'A']
[2,'B']
[3,'C']
[4,'A']
我想返回[1,2,3](因为' A'不再是唯一的)而失去了第4名。我已尝试.select('DISTINCT letter, id')
和某些分组,但我似乎无法获得它。
我的数据库是PostgreSQL。 SQL或ActiveRecord很好。
答案 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)