ActiveRecord基于两个属性的唯一性组合选择记录

时间:2014-08-15 20:57:08

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

我的表格如下:

ID    |    Multiple    |    Itemlist_ID    |    Inventory_ID
----------------------------------------------------------------
1     |    1           |    1              |    1
2     |    1           |    1              |    2
3     |    1           |    1              |    3
4     |    1           |    4              |    2
5     |    1           |    4              |    3
6     |    2           |    4              |    2
7     |    2           |    4              |    3

如何使用MultipleItemlist_ID的唯一组合检索记录?例如下面:

ID    |    Multiple    |    Itemlist_ID    |    Inventory_ID
----------------------------------------------------------------
1     |    1           |    1              |    1
4     |    1           |    4              |    2
6     |    2           |    4              |    2

注意,这是检索不会显示Inventory_ID的View,因此我不关心是否取回记录[1,4,6][1,5,7][2,4,6]。使用first命令很好。

1 个答案:

答案 0 :(得分:0)

您可以使用此语法在Activerecord中执行GROUP BY查询(将Model替换为您的班级名称):

Model.group('Multiple', 'Itemlist_ID').select('Multiple', 'Itemlist_ID')

这将检索(Multiple,Itemlist_ID)的所有唯一组合。

您可以选择在除两个分组列之外的列上添加聚合操作,例如SUM,AVG,COUNT等。例如,如果您想知道每个组中有多少条记录:

Model.group('Multiple', 'Itemlist_ID').select('Multiple', 'Itemlist_ID', 'COUNT(1) AS group_count')

这会在名为' group_count'的结果中添加一个属性。这将是每组中包含的记录数