2015-05-12 4 views
1

У меня есть таблица с folowwing столбцами:Удалить дублированные записи на основе пары столбцов?

id 
app_id 
tag_id 
created_at 
updated_at 

Пара app_id и tag_id должны быть Uniq. Как удалить самые старые дублированные записи на основе столбца updated_at, чтобы определить «самые старые» и пару (app_id, tag_id) для определения «дублирования»?

+0

Напишитесь, чтобы сделать это. – p4sh4

+0

@ p4sh4 Да, вопрос о том, как это сделать, используя ActiveRecord – Jess

+0

Вы можете использовать ActiveRecord в задачах rake. – p4sh4

ответ

2
ActiveRecord::Base.connection.execute <<-SQL 
    delete from my_table where id in (
    select t1.id 
    from my_table t1 
    inner join (
     select app_id, tag_id, min(updated_at) as oldest 
     from my_table 
     group by app_id, tag_id 
    ) t2 
    on t1.app_id = t2.app_id 
    and t1.tag_id = t2.tag_id 
    and t1.updated_at = t2.oldest 
    ) 
SQL 

Замените my_table на ваше фактическое имя таблицы.

Смежные вопросы