delete from 表A where 表A.fd1||表A.fd2 in (select 表B.fd1||表B.fd2 from 表B,表A AA where 表B.fd1= AA.fd1 and 表B.fd2= AA.fd2)

解决方案 »

  1.   

    delete from 表A where (表A.fd1,表A.fd2) in (select 表B.fd1,表B.fd2 from 表B,表A where 表B.fd1= 表A.fd1,表B.fd2= 表A.fd2)
      

  2.   

    select 表B.fd1,表B.fd2 from 表B,表A where 表B.fd1= 表A.fd1,表B.fd2= 表A.fd2
    这个结果集比较大的话, 给(fd1,fd2)加索引,而且使用顺序不要错
      

  3.   

    如果两个字段都是varchar2类型,可是尝试这样处理
    delete from 表A where 表A.fd1||'&'||表A.fd2 in (select 表B.fd1||'&'||表B.fd2 from 表B,表A where A.fd1=B.fd1 and A.fd2=B.fd2);
      

  4.   

    fd1与fd2的类型无需相同。表B最好按fd1和fd2建索引
    delete from 表A where exists (select 1 from 表B where 表B.fd1= 表A.fd1 and 表B.fd2= 表A.fd2);
      

  5.   

    同意bobfang(匆匆过客) 的做法!
      

  6.   

    maohaisheng() 的写法也应该是对的!
      

  7.   

    这样吧
    delete from 表A where (fd1,fd2) in (select fd1,fd2 from 表B where fd1=表A.fd1 and fd2=表A.fd2);
      

  8.   

    简简单单的不就行了吗?
    delete from 表A where (fd1,fd2) in (select fd1,fd2 from 表B );