delete b where exists (select 1 from a where aa=b.aa and bb=b.bb)

解决方案 »

  1.   

    delete b.* from b join a on a.aa=b.aa and a.bb=b.bb
      

  2.   

    同意大力select 1 from a  
    1可以代替条件列表,主要判断该记录是否存在
      

  3.   

    delete b where exists (select 1 from a where aa=b.aa and bb=b.bb)
      

  4.   

    delete b  from
     (select * from a ) aa
      

  5.   

    测试结果如下
    a 表记录
    aa bb
    a  a
    b  b
    b表记录
    aa bb
    a  a
    b  b
    c  c 测试完了后(用大力的)b表3条记录都没了,全部到a表去了
      

  6.   

    我想要的结果是a表记录不变,b表只留下cc记录
      

  7.   

    delete b  from
     (select aa aa,bb bb from a ) ddd
      

  8.   

    delete b from b join a on a.aa=b.aa and a.bb=b.bb
      

  9.   

    create table #a(aa varchar(10),bb varchar(10))
    insert #a values('a','a')
    insert #a values('b','b')
    create table #b(aa varchar(10),bb varchar(10))
    insert #b values('a','a')
    insert #b values('b','b')
    insert #b values('c','c')delete #b where exists (select 1 from #a where aa=#b.aa and bb=#b.bb)
    select * from #bgo
    drop table #a,#b
      

  10.   


    aa         bb         
    ---------- ---------- 
    c          c(所影响的行数为 1 行)
      

  11.   

    delete b from b join a on a.aa=b.aa and a.bb=b.bb
      

  12.   

    create table #a(aa varchar(10),bb varchar(10))
    insert #a values('a','a')
    insert #a values('b','b')
    create table #b(aa varchar(10),bb varchar(10))
    insert #b values('a','a')
    insert #b values('b','b')
    insert #b values('c','c')delete #b from #b join #a on #a.aa=#b.aa and #a.bb=#b.bbselect * from #bgo
    drop table #a,#b结果:aa  bb
    ------
    c   c