-- 使用子查询 delete A where cid in (select cid from B where cp = 2 )
楼上方法在mysql5.6版本一下效率很差delete A from A,B where A.cid=B.cid and B.cp=2;
其实我就是不想用IN 后来找到一个比较好的方法 DELETE a FROM bpp_set_channel a LEFT JOIN bpp_channel b ON a.channelid = b.id WHERE b.CP = 2;
delete 进行关联删除,有以下下方法参考: 1、in or exist(量大是不推荐in) DELETE FROM A WHERE EXISTS (SELECT 1 FROM B WHERE A.CID=B.CID and B.cp = 2); 2、join,关联删除 delete A from A ,B where A.CID=B.CID and B.cp = 2; or delete A from A inner join B on A.CID=B.CID where B.cp = 2; 推荐使用第二种
-- 使用子查询
delete A where cid in (select cid from B where cp = 2 )
后来找到一个比较好的方法
DELETE a FROM bpp_set_channel a LEFT JOIN bpp_channel b ON a.channelid = b.id WHERE b.CP = 2;
1、in or exist(量大是不推荐in)
DELETE FROM A
WHERE EXISTS
(SELECT 1 FROM B WHERE A.CID=B.CID and B.cp = 2);
2、join,关联删除
delete A
from A ,B
where A.CID=B.CID and B.cp = 2;
or
delete A
from A
inner join B
on A.CID=B.CID
where B.cp = 2;
推荐使用第二种