错错错
几条记录a有 ,b也是有的,不过b有的都是b.scbz=2的 maybe

解决方案 »

  1.   

    这三条查出来是229条记录,我想联合查询出来的应该是233条呀,怎么办呢?错在呢?可以用b.scbz<>2来去掉重复的,b.scbz<>2可以去所有重复的数据。
    -----------------以上应用--------------------------你自己都知道可以去掉重复的,所以找出来的是229而非233就不怪了,
    有可能是你的记复有几条重复啊。-----------------------------------------------------------------
    欢迎访问:http://CoolSlob.fykj.com/
    本站◆第一主打:《查询利器》---CSDN FAQ查询
      ◆第二主打:《CSDN精华贴》
      ◆第三主打:《下载专区》
      

  2.   

    SELECT * FROM gczjzxdwshspb a left outer join dwpdb b on a.jmsbh=b.jmsbh and b.scbz<>2
    这样应该就行了,试试吧
      

  3.   

    SELECT * FROM gczjzxdwshspb a left outer join dwpdb b on a.jmsbh=b.jmsbh where b.scbz<>2
    这我试了,一样的,gczjzxdwshspb这个表里没有重复的数据,只是dwpdb里有重复的,应该没有关系的。我怎么写应该能把gczjzxdwshspb的数据全显示出来呢?但要用到联合查询?
      

  4.   

    SELECT * FROM gczjzxdwshspb a left outer join dwpdb b on a.jmsbh=b.jmsbh and b.scbz<>2SELECT * FROM gczjzxdwshspb a left outer join dwpdb b on a.jmsbh=b.jmsbh where b.scbz<>2
    这两句话效果是不一样的
    用了left join之后不管怎样对左边的表数据都会显示出来,但也受到
    where条件的限制.
    第一句的意思是先把dwpdb表里的scbz=2的先过滤掉之后再同gczjzxdwshspb外联
    而第二句的意思则是先外联再过滤,那显然是不一样的
      

  5.   

    这也是由外联(left join)的特殊性决定的
    举个例子:
    select * from a left join b on a.id=b.id and a.id<>3 and b.id<>2
    这时候a.id<>3写和不写是一样的,这个条件就不起作用了,因为左边的记录数是不管如何都要例出来的
    而b.id<>2却是有效的
    这时候如果也要让a.id<>3起作用的话应该写成
    select * from a left join b on a.id=b.id and b.id<>2 where a.id<>3而b.id<>2写在join条件中和写在where后面又是不一样的