删除一张表中的记录,条件在另外一张关联表中

ycp122912a 2014-11-12 02:14:35
我现在有一张表A,想删除其中属性值CP=2的值,但是问题是CP这个属性是存在表B中的,A和B通过CID关联,请问我要怎么删除A表中的这些记录呢。
...全文
3553 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaofei8704 2014-11-12
  • 打赏
  • 举报
回复
完了?晚了
gaofei8704 2014-11-12
  • 打赏
  • 举报
回复
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; 推荐使用第二种
ycp122912a 2014-11-12
  • 打赏
  • 举报
回复
引用 2 楼 rucypli 的回复:
楼上方法在mysql5.6版本一下效率很差 delete A from A,B where A.cid=B.cid and B.cp=2;
斑竹的方法很好
ycp122912a 2014-11-12
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:

-- 使用子查询
delete A where cid in (select cid from B where cp = 2 )
其实我就是不想用IN 后来找到一个比较好的方法 DELETE a FROM bpp_set_channel a LEFT JOIN bpp_channel b ON a.channelid = b.id WHERE b.CP = 2;
rucypli 2014-11-12
  • 打赏
  • 举报
回复
楼上方法在mysql5.6版本一下效率很差 delete A from A,B where A.cid=B.cid and B.cp=2;
卖水果的net 2014-11-12
  • 打赏
  • 举报
回复

-- 使用子查询
delete A where cid in (select cid from B where cp = 2 )

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧