天天看点

mysql的delete语句使用exists删除数据走不通

mysql中,打算使用exists查找相关记录,然后删除,结果搞不定。

我们有个表folder,里面有个字段code存在重复值,本来编码应该是唯一的。因此想将重复记录删除。

这样

delete from folder fd1 where exists(
select 1 from folder fd2 where id<>fd1.id and code=fd1.code);      

不行!

这样

delete from folder where id in(
select id from folder fd1 where exists(
select 1 from folder fd2 where id<fd1.id and code=fd1.code));      

还是不行!

查找​​网上的例子​​:

DELETE tb
    FROM tb LEFT JOIN
         tb tb2
         ON tb2.`merchantId` = 'A32WNPGI8GE4WW' AND
            tb2.`marketplaceId` IN ('A1AM78C64UM0Y8', 'A2EUQ1WTGCTBG2', 'ATVPDKIKX0DER')
    WHERE tb2.merchantID IS NULL;      
create temporary table tmp_folder_id as select id from folder fd1 where exists(select 1 from folder fd2 where id<fd1.id and code=fd1.code);

delete from folder where id in(select id from tmp_folder_id);

drop table tmp_folder_id;      

继续阅读