本帖最后由 ycp122912a 于 2014-11-12 14:35:57 编辑

解决方案 »

  1.   


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

  2.   

    楼上方法在mysql5.6版本一下效率很差delete A from A,B where A.cid=B.cid and B.cp=2;
      

  3.   

    其实我就是不想用IN
    后来找到一个比较好的方法
    DELETE a FROM bpp_set_channel a LEFT JOIN bpp_channel b ON a.channelid = b.id WHERE b.CP = 2;
      

  4.   

    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;
    推荐使用第二种