Найти дублированные строки и обновить их

У меня есть много дублированных строк в моей базе данных, я хочу отредактировать их все, поэтому я пишу такой запрос, чтобы найти все дублированные строки

SELECT a.journal_id
     , a.article_id
     , a.submission_file_id
     , a.editor_file_id
  FROM articles_migration a
  JOIN
     ( SELECT submission_file_id 
         FROM articles_migration 
        GROUP 
           BY submission_file_id 
       HAVING COUNT(article_id) >1
     )temp 
    ON a.submission_file_id = temp.submission_file_id 

этот запрос возвращает 1170 записей, которые дублируются! но теперь я хочу удалить какие записи, которые имеют тот же journal_id для этой цели

 journal_id     article_id  submission_file_id  editor_file_id  
16                845            1848           2402
16                6409           1848           2402
54                5317           1848           2402

на первом шаге я должен удалить одну из строк, у которых journal_id имеет такое же значение, например, строки 1 или 2, а на шаге 2 я должен получить такой результат:

 journal_id     article_id  submission_file_id  editor_file_id  
16                845            1848           2402
54                5317           1848           2402

поэтому я хочу обновить одну строку с этой формулой: значение submission_file_id => (значение * 10000)

и, наконец, я должен иметь такой результат

 journal_id     article_id  submission_file_id  editor_file_id  
16                845            1848           2402
54                5317           18480000       2402

заранее спасибо

1 ответ

Это правильный ответ

DELETE a FROM articles_migration as a INNER JOIN articles_migration as b ON a.submission_file_id = b.submission_file_id and a.journal_id = b.journal_id WHERE a.article_id < b.article_id

Приведенный выше код удаляет повторяющиеся строки, и теперь я должен обновить их

update articles_migration  as t1 inner join articles_migration as t2 on (t1.submission_file_id = t2.submission_file_id) and t1.article_id <> t2.article_id set t1.submission_file_id=(t1.submission_file_id * 1000);
Другие вопросы по тегам