使用Postgres和Activerecord在多个列中查找具有重复值的记录的最佳方法是什么?
我找到了这个解决方案here:
User.find(:all, :group => [:first, :email], :having => "count(*) > 1" )
但它似乎不适用于博士后.我得到了这个错误:
PG::GroupingError:ERROR:列"parts.id"必须出现在GROUP BY子句中,或在聚合函数中使用
使用Postgres和Activerecord在多个列中查找具有重复值的记录的最佳方法是什么?
我找到了这个解决方案here:
User.find(:all, :group => [:first, :email], :having => "count(*) > 1" )
但它似乎不适用于博士后.我得到了这个错误:
PG::GroupingError:ERROR:列"parts.id"必须出现在GROUP BY子句中,或在聚合函数中使用
Tested & Working Version
User.select(:first,:email).group(:first,:email).having("count(*) > 1")
此外,这是一个有点无关,但方便.如果你想知道每种组合被发现的次数,把.最后的尺寸:
User.select(:first,:email).group(:first,:email).having("count(*) > 1").size
您将得到一个如下所示的结果集:
{[nil, nil]=>512,
["Joe", "test@test.com"]=>23,
["Jim", "email2@gmail.com"]=>36,
["John", "email3@gmail.com"]=>21}
我觉得这很酷,以前没见过.
要归功于塔林,这只是她的答案的一个调整版本.