SELECT tb1.* FROM tb1
INNER JOIN tb2 ON tb1.Fa<>tb2.Fa AND tb1.Fb<>tb2.Fb AND tb1.Fc<>tb2.Fc

解决方案 »

  1.   

    "现在我想在表tb1找出tb1.Fa<>tb2.Fa,tb1.Fb<>tb2.Fb,tb1.Fc<>tb2.Fc所有记录"
    什么意思?
    A 找出表tb1中没在表tb2中出现的记录.
    B 找出表tb1中的满足如下条件的记录:该记录的Fa字段没有在tb2表中的fa列出现过,该记录的Fb字段没有在tb2表中的fb列出现过,该记录的Fc字段没有在tb2表中的fc列出现过,
    C 其他选A还是选B?
      

  2.   

    回 filebat(Mark):选B也就是:tb1的Fa+Fb+Fc组合不等于tb2的Fa+Fb+Fc的组合
      

  3.   

    select tb1.*
    from tb1,tb2
    where tb1.Fa<>tb2.Fa
    or tb1.Fb<>tb2.Fb
    or tb1.Fc<>tb2.Fc
      

  4.   

    bugchen888,你的写法不是俺想要的。
      

  5.   

    select * from tb1 
    where not exists(select 1 from tb2 where Fa=tb1.Fa or Fb=tb1.Fb or Fc=tb1.Fc)
      

  6.   

    vivianfdlpw() :"tb1的Fa+Fb+Fc组合不等于tb2的Fa+Fb+Fc的组合"应该是这样写吧  select * from tb1 
      where not exists(select 1 from tb2 where Fa=tb1.Fa and Fb=tb1.Fb and Fc=tb1.Fc)
      

  7.   

    我是按照“B 找出表tb1中的满足如下条件的记录:该记录的Fa字段没有在tb2表中的fa列出现过,该记录的Fb字段没有在tb2表中的fb列出现过,该记录的Fc字段没有在tb2表中的fc列出现过,”来做的如果你的意思是:“B 找出表tb1中的满足如下条件的记录:该记录的Fa字段没有在tb2表中的fa列出现过,并且同时该记录的Fb字段没有在tb2表中的fb列出现过,并且同时该记录的Fc字段没有在tb2表中的fc列出现过” ,那么你的是对的。中国的文字就是歧义性强
      

  8.   

    megin,换一种写看一看:select * from tb1 where fa not in (select fa from tb2) and fb not in (select fb from tb2) and fc not in (select fc from tb2)
      

  9.   

    vivianfdlpw() ,是我表达不够明确,谢谢你的帮助。