MS SQL SERVER:
delete from posi_title
where posi_titile.id not in 
(select distinct id from func_title)

解决方案 »

  1.   


    delete from  Posi_Title 
    where not exists(select 1 from Func_Title where ID = Posi_Title.ID);
      

  2.   

    IronPromises(铁诺)的方法好象麻烦了一点。
      

  3.   


    用exists不但不麻烦,而且速度快.
      

  4.   

    如果FUNC_TITLE的DISTINCT ID纪录很多的话,我会用IronPromises(铁诺)的方法,反之则用按钮的办法.我曾经遇到过用NOT IN从15万纪录的表中删除另一个表(也是差不多15万纪录)中不存在的纪录,结果系统CPU100%占用了半个多小时. 用NOT EXISTS就好很多.
      

  5.   

    同意IronPromises(铁诺),其写法应该是最快的
      

  6.   

    IronPromises(铁诺)的方法不麻烦,不过我没比较过这两种语句的速度。
      

  7.   

    学习学习:)还是弱水经验丰富,PFPF:-)
      

  8.   

    Delete Pos_Title From Posi_title A LEFT JOIN Func_Title B ON A.ID=B.ID WHERE B.ID IS NULL --比較慢的一種方法,可是很中看。我like it.
      

  9.   

    delete from pos_title a where a.id not in(select b.id from func_title)