Chinaunix首页 | 论坛 | 博客
  • 博客访问: 557424
  • 博文数量: 48
  • 博客积分: 4026
  • 博客等级: 上校
  • 技术积分: 622
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-26 13:59
文章分类

全部博文(48)

文章存档

2011年(3)

2010年(6)

2009年(12)

2008年(27)

我的朋友

分类: Oracle

2009-11-05 13:38:30

1)select a.*,b.* from A 表 left join B 表 on a.name=b.name and a.isDeleted=0
 
2) select a.*,b.* from A 表 left join B 表 on a.name=b.name  where a.isDeleted=0
 
 
1)不同于2), 1)的记录数明显大于2)的记录数,因为1)等价于以下语句
 
A 表 left join B 表 on a.id=b.aid where a.isDeleted=0 or a.isDeleted is null
 
例如如下的表结构
 
A表

ID

 Name  XX
 1  a  3
 2  b  4
 3  c  5
 
 
B表
 ID  Name  isDeleted
 1  b  0
 2  d  1
 3  a  0
 
使用1)句将得到以下的查询结果
 
 ID  Name  XX ID  Name   isDeleted
 1  a  3  3  a

 0

 2  b  4  1  b

 0

 3  c  5      
 
而用2)句将得到以下的查询结果(将通过left join 匹配到的isDeleted为空的过滤掉了)
 ID  Name  XX  ID  Name  isDeleted 
 1  a  3  3  a

 0

 2  b  4  1  b

 0

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