使用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}

我觉得这很酷,以前没见过.

要归功于塔林,这只是她的答案的一个调整版本.

Ruby-on-rails相关问答推荐

在数组中定位不匹配的索引

Rails引擎importmap Uncaught ReferenceError:未定义tinymce

会话控制器中的某种问题

根据表单内的 Select 字段值渲染部分内容

为 has_attached_file 等活动记录属性创建类方法

Rails 连接并包含连接表中的列

Rails 将字符串与视图中的变量连接的最佳方法

验证以确保唯一性但忽略空值?

ActiveRecord 回调列表

用 url_for 查询参数?

使用 RSpec 2 关闭一个规范的事务性固定装置

为什么 respond_with 被从 rails 4.2 移除到它自己的 gem 中?

嵌套模型和父验证

是否可以使用 Rails 迁移重命名索引?

在 rails 3 中批量插入

设计:在注册期间禁用密码确认

你如何undo撤消Bundle 安装 --without

您如何访问设计控制器?

Ruby on Rails:如何在 select_tag 中使用默认占位符?

ArgumentError:ApplicationController 的副本已从模块树中删除,但仍处于活动状态