SELECT * FROM gczjzxdwshspb a left outer join dwpdb b on a.jmsbh=b.jmsbh and b.scbz<>2 这样应该就行了,试试吧
SELECT * FROM gczjzxdwshspb a left outer join dwpdb b on a.jmsbh=b.jmsbh where b.scbz<>2 这我试了,一样的,gczjzxdwshspb这个表里没有重复的数据,只是dwpdb里有重复的,应该没有关系的。我怎么写应该能把gczjzxdwshspb的数据全显示出来呢?但要用到联合查询?
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外联 而第二句的意思则是先外联再过滤,那显然是不一样的
这也是由外联(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后面又是不一样的
-----------------以上应用--------------------------你自己都知道可以去掉重复的,所以找出来的是229而非233就不怪了,
有可能是你的记复有几条重复啊。-----------------------------------------------------------------
欢迎访问:http://CoolSlob.fykj.com/
本站◆第一主打:《查询利器》---CSDN FAQ查询
◆第二主打:《CSDN精华贴》
◆第三主打:《下载专区》
这样应该就行了,试试吧
这我试了,一样的,gczjzxdwshspb这个表里没有重复的数据,只是dwpdb里有重复的,应该没有关系的。我怎么写应该能把gczjzxdwshspb的数据全显示出来呢?但要用到联合查询?
这两句话效果是不一样的
用了left join之后不管怎样对左边的表数据都会显示出来,但也受到
where条件的限制.
第一句的意思是先把dwpdb表里的scbz=2的先过滤掉之后再同gczjzxdwshspb外联
而第二句的意思则是先外联再过滤,那显然是不一样的
举个例子:
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后面又是不一样的