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) |