-1

我的数据库中有很多重复的行我想编辑所有这些行,所以我写了一个这样的查询来查找所有重复的行

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 => (value * 10,000)

最后我应该有这样的结果

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

提前致谢

4

1 回答 1

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);
于 2018-01-16T08:43:20.310 回答