我的数据库中有很多重复的行 我想编辑所有这些,所以我写了一个类似的查询来查找所有重复的行
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 value => (价值* 10,000)
最后我应该有这样的结果
journal_id article_id submission_file_id editor_file_id
16 845 1848 2402
54 5317 18480000 2402
提前致谢
答案 0 :(得分: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);