Chinaunix首页 | 论坛 | 博客
  • 博客访问: 142491
  • 博文数量: 12
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-09 14:36
文章分类

全部博文(12)

文章存档

2011年(1)

2008年(11)

我的朋友

分类: Oracle

2008-08-07 14:20:45

aa

A     B     C

10           5

11           6

12           6

13          

bb

A     B     C

11           6

12           7

 

select * from aa,bb where aa.a=bb.a(+)

select * from aa left join bb on aa.a=bb.a

A     B     C     A     B     C

10           5                  

11           6     11           6

12           6     12           7

13                               

以上两种写法结果集一样

 

select * from aa,bb where aa.a=bb.a(+) and aa.c=5

select * from aa left join bb on aa.a=bb.a where aa.c=5

A     B     C     A     B     C

10           5                  

以上两种写法结果集一样,尽管使用了左外连接,但是where条件会把左外连接返回的结果集进行相应的过滤

 

select * from aa,bb where aa.a=bb.a(+) and bb.c=7

select * from aa left join bb on aa.a=bb.a where bb.c=7

A     B     C     A     B     C

12           6     12           7

以上两种写法结果集一样,尽管使用了左外连接,但是where条件会把左外连接返回的结果集进行相应的过滤

 

select * from aa,bb where aa.a=bb.a(+) and aa.c=bb.c

select * from aa left join bb on aa.a=bb.a where aa.c=bb.c

A     B     C     A     B     C

11           6     11           6

以上两种写法结果集一样,尽管使用了左外连接,但是where条件会把左外连接返回的结果集进行相应的过滤

 

select * from aa,bb where aa.a=bb.a(+) and aa.c=bb.c(+)

select * from aa left join bb on aa.a=bb.a and aa.c=bb.c

A     B     C     A     B     C

10           5                  

11           6     11           6

12           6                  

13                               

假如使用(+)做左外连接,必须在where的两个条件里面都加上(+)

 

select * from aa left join bb on aa.a=bb.a and aa.c=5

A     B     C     A     B     C

10           5                  

11           6                  

12           6                  

13                               

select * from aa left join bb on aa.a=bb.a and bb.c=7

select * from aa,bb where aa.a=bb.a(+) and bb.c(+)=7

A     B     C     A     B     C

10           5                  

11           6                  

12           6     12           7

13                               

再次印证了结果集包含aa所有的记录,只包含bb中符合条件的记录

 

select * from aa left join bb on aa.a=bb.a and aa.c=bb.c

A     B     C     A     B     C

11           6     11           6

13                               

10           5                  

12           6                  

再次印证了结果集包含aa所有的记录,只包含bb中符合条件的记录

 

select * from aa,bb where aa.a=bb.a(+) and aa.c=5(+)

此种写法不对

select * from aa,bb where aa.a=bb.a(+) and aa.c(+)=5

A     B     C     A     B     C

10           5                  

此种写法没有语法错误

阅读(627) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~