mysql的delete语句使用exists删除数据走不通
Posted 左直拳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
我去,这是什么鬼,看不懂。
心一横,使出绝招,先将重复记录的ID保存进临时表,然后结合该临时表删除,最后打扫战场,删除临时表,深藏功与名。
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;
以上是关于mysql的delete语句使用exists删除数据走不通的主要内容,如果未能解决你的问题,请参考以下文章
MySQL基础-13DML语言(数据操作语言)-3.删除语句