ruby中的活动记录界面,用于分组和拥有

时间:2016-01-29 02:46:20

标签: mysql sql ruby-on-rails ruby

我有一个包含列id和a1的表。 id a1 1 b2 1 b1 2 b1 1 b3 2 b2

sql中的查询是 -

select id, count(*) as TOTAL from table where a1 in (b1, b2) group by(id, a1) having count(*) > 1 

我必须在记录界面中编写此查询 -

Table.select(:id).where(:a1 => 'b1').group(:id, :a1).count.having(count>1)

我收到以下错误 -

NameError: undefined local variable or method `count' for main:Object

如何解决此错误。

注意 - 我必须在其中包含a1 = b1或a1 = b2,但由于我也遇到了错误,我将其删除了。

1 个答案:

答案 0 :(得分:0)

你必须像这样传递它:

Table.select(:id).where(:a1 => 'b1').group(:id, :a1).having('count(*) > 1')

或更好:

Table.select(:id).where(:a1 => 'b1').group(:id, :a1).having('count(*) > ?', 1)

参考:#Having

另一方面,你不能group(:id, :a1).count.havingcount返回哈希而不是ActiveRecord::Relation