select * from bbb 
where not exists (
select * from ckd  
 where dldm=bbb.dldm
 and sbth=bbb.sbth
 and ljth=bbb.ljth
 )

解决方案 »

  1.   

    大虾,我是要求满足 不在select dldm,sbth,ljth from ckd where A 的记录,
    如果条件A 变化为B呢? 用 exists 可以吗?
      

  2.   

    (select bbb.dldm,bbb.sbth,bbb.ljth
    from bbb)
    minus
    (select bbb.dldm,bbb.sbth,bbb.ljth 
    from bbb,ckd 
    where bbb.dldm = ckd.dldm
    and bbb.sbth = ckd.sbth
    and bbb.ljth = ckd.ljth
    and A)
    提个醒:表结构字段命名不规范;
      

  3.   

    ORACLE中可以这么写的,只要IN(NOT IN)前后的列数量一样就行.
    select dldm,sbth,ljth 
      from bbb 
     where (dldm,sbth,ljth) not in (select dldm,sbth,ljth from ckd where A);
      

  4.   

    Haiwer(海阔天空),你的SQL语句好象不太行,呵呵,
    ragweed_wg(冷月一刀),真感谢你,好象可以啊,多谢你的提醒,我的字段命名有点道理吧,dldm(大类代码) sbth(设备图号) ljth(零件图号) ckd 是出库单啊,太多了,只能这样直观点了!呵呵
    KingSunSha(弱水三千),真是太感谢你了,我忘记加(),呵呵,多谢知道,
    我对数据库简直是空白,各写可以告诉我哪里有关于SQL和ORACLE的好的网址呢,除了
    www.oradb.net
      

  5.   

    千万别用KingSunSha(弱水三千)的写法,理论上是可以,但以后数据量大你就惨了.
    还是分两句吧,先选出符合条件的,再用它作条件用不等于来选
      

  6.   

    那就用not exists吧,总体效果好一点
    select dldm,sbth,ljth 
      from bbb x
    where not exists (select dldm,sbth,ljth from ckd 
                       where A
                         and dldm = x.dldm
                         and sbth = x.sbth
                         and ljth = x.ljth);
      

  7.   

    哦,not in 会出现一个非常奇怪的现象,就是当用模糊查询的时候,可能是字符不认识吧,当我里面有用到模糊查询时,查“电”时,会出现“铁,金”之类乱七八糟的
    !各位,ORACLE中实现差异查询的关键字是什么, SERVER中好象是Difference!
    急急急!
      

  8.   

    所有的IN 、NOT IN都可以化为不使用IN 、NOT IN的语句。select bbb.* from bbb,ckd where bbb.dldm=ckd.dldm and bbb.sbth=ckd.sbth and bbb.ljth = ckd.ljth and (not A) 
      

  9.   

    我要的是把BBB.dldm,bbb.sbth,bbb.ljth中排除CKD中符合条件A的记录!
    我最后选择了冷月一刀的SQL语句,因为用IN 和 NOT IN 速度简直是太慢了,我几乎无法忍受,各位以后要记住,能不用IN 和NOT IN 的尽量避免用!
    谢谢!
      

  10.   

    customer(customer):
    select bbb.* from bbb,ckd where bbb.dldm(+)=ckd.dldm and bbb.sbth(+)=ckd.sbth and bbb.ljth (+)= ckd.ljth and (not A……)数据量大时,minus也不快的。 
      

  11.   

    楼上大虾的SQL语句里面多了+是什么意思呢