如何在ActiveRecord中找到除原始记录之外的重复记录

时间:2014-10-17 17:08:08

标签: mysql ruby-on-rails ruby activerecord

使用Rails 4,Ruby 2,MySql

我想在我的数据库中找到所有记录的重复记录 - 但不是原始记录本身。

这样我就可以update_attributes(:duplicate => true)对这些记录进行处理,并保留原始未记录为副本的记录。

你可以说我正在寻找Uniq的反面*我不想要Uniq值,我想要事后不是uniq的所有值。我不希望所有具有重复的值都包含原始值。

我不介意使用纯SQL或Ruby,但我更喜欢使用活动记录来保持Railsy。

假设该表名为“Leads”,我们正在寻找那些字段“telephone_number”相同的表。我会单独留下记录1并将2,3和4标记为duplicate = true。

*如果我想要与Uniq相反,我可以做Find keep duplicates in Ruby hashes

之类的事情

b = a.group_by { |h| h[:telephone_number] }.values.select { |a| a.size > 1 }.flatten

但这就是所有的记录,我想要所有重复的记录,而不是我正在比较它的原始记录。

1 个答案:

答案 0 :(得分:1)

我假设您的查询返回所有'潜在客户'在阵列b中具有相同的电话号码。然后你可以使用

b = b.shift

从b数组中取出第一个元素。然后,您可以继续原始的想法update_attributes(:duplicate => true)