我有一个Rails 5应用程序。我有一个表充斥着从各种来源拉到URL数据:Rails 5 ActiveRecord Delete Duplicates
id url
1 http://google.com
2 http://yahoo.com
3 http://msn.com
4 http://google.com
5 http://yahoo.com
6 http://askjeeves.com
如何从该表中删除重复?
我有一个Rails 5应用程序。我有一个表充斥着从各种来源拉到URL数据:Rails 5 ActiveRecord Delete Duplicates
id url
1 http://google.com
2 http://yahoo.com
3 http://msn.com
4 http://google.com
5 http://yahoo.com
6 http://askjeeves.com
如何从该表中删除重复?
您可以通过URL组,留下一个并删除重复:
Model.all.group_by(:url).values.each do |dup|
dup.pop #leave one
dup.each(&:destroy) #destroy other
end
//查找每个分组项目的所有重复的记录,并将它们组通过现场
dups = MyModel.group(:url).having('count("url") > 1').count(:name)
//迭代破坏重复数据库
dups.each do |key, value|
# Keep one and return rest of the duplicate records
duplicates = MyModel.where(url: key)[1..value-1]
puts "#{key} = #{duplicates.count}"
duplicates.each(&:destroy)
end
无解决方案的SQL解决方案:
Model.where.not(id: Model.group(:url).select("min(id)")).destroy_all
OR
Model.where.not(id: Model.group(:url).select("min(id)")).delete_all
这将删除所有副本保存记录有重复的记录最低ID。