一条SQL删除多张表中的数据,这几张表中存在关联关系,怎么写sql?

解决方案 »

  1.   

    为啥要一个SQL呢  逐条执行SQL删除不行吗 
    有关系的删除  想到主外键级联删除
      

  2.   

    那样有些麻烦,想写一条sql
      

  3.   

    用merge 的方式 删除试试。
      

  4.   


    先连接 两个表 再和要删除的表连接。
    DELETE FROM T1 WHERE EXISTS(SELECT 1 FROM
     (SELECT * FROM T3 JOIN T2 ON T3.NN=T2.NAME )OO WHERE  T1.ID=OO.ID)
      

  5.   

    我的尝试:
    delete from(select * from A inner join B on A.ID=B.A_ID where A.id=XXX)
      

  6.   

    用存储过程里写,先删有外键的表,再删主表。做异常处理,然后再commit
      

  7.   

    把附表的外键删除行为改为CASCADE。这样就可以级联删除