Sql ActiveRecord根据组合中两个属性的唯一性选择记录
我的桌子看起来像这样:Sql ActiveRecord根据组合中两个属性的唯一性选择记录,sql,ruby-on-rails,activerecord,ruby-on-rails-4,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
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
如何使用多个
和Itemlist\u ID
的唯一组合检索记录?例如:
ID | Multiple | Itemlist_ID | Inventory_ID
----------------------------------------------------------------
1 | 1 | 1 | 1
4 | 1 | 4 | 2
6 | 2 | 4 | 2
注意,这是为不显示库存ID的视图进行检索,因此我不关心是否返回记录
[1,4,6]
或[1,5,7]
或[2,4,6]
。首先使用命令可以。您可以使用此语法在Activerecord中执行分组查询(将模型
替换为您的类名):
这将检索(多个,Itemlist\u ID)的所有唯一组合
您可以选择在两个分组列以外的列上添加聚合操作,例如SUM、AVG、COUNT等。例如,如果您想知道每个组中有多少条记录:
Model.group('Multiple', 'Itemlist_ID').select('Multiple', 'Itemlist_ID', 'COUNT(1) AS group_count')
这将为结果添加一个名为“group_count”的属性,即每个组中包含的记录数检索结果中的第一个库存ID是否重要?如果没有,您可以使用分组依据(多个,Itemlist\u ID)。不,我不关心库存\u ID,所以检索哪个并不重要。你说的使用小组是什么意思?请举个例子好吗?
Model.group('Multiple', 'Itemlist_ID').select('Multiple', 'Itemlist_ID', 'COUNT(1) AS group_count')