sql ruby-on-rails activerecord duplicates rails-activerecord

sql - Eliminar registros duplicados basados en columnas mĂșltiples



ruby-on-rails activerecord (1)

En nuestro sistema ejecutamos importaciones por hora desde una base de datos externa. Debido a un error en los scripts de importación, ahora hay algunos registros duplicados.

Un duplicado se considera donde cualquier registro tiene el mismo :legacy_id y :company .

¿Qué código puedo ejecutar para encontrar y eliminar estos duplicados?

Estaba jugando con esto:

Product.select(:legacy_id,:company).group(:legacy_id,:company).having("count(*) > 1")

Parecía devolver algunos de los duplicados, pero no estaba seguro de cómo eliminar desde allí.

¿Algunas ideas?


Puedes probar el siguiente enfoque:

Product.where.not( id: Product.group(:legacy_id, :company).pluck(''min(products.id)'') ).delete_all

O sql puro:

delete from products where id not in ( select min(p.id) from products p group by p.legacy_id, p.company )