left outer join 的简单总结
来源:互联网 发布:喵姐捏脸数据 编辑:程序博客网 时间:2024/05/22 12:13
表:lhc01
id uid
3 1
2 1
1 1
4 1
1 2
3 2
表:lhc02
id uid
1 2
4 1
2 1
一,基本left outer join
select * from lhc01 a left outer join lhc02 b on a.id=b.id;
id uid id uid
3 1 NULL NULL
2 1 2 1
1 1 1 2
4 1 4 1
1 2 1 2
3 2 NULL NULL
二,让我们看下面三条语句:
1,select * from lhc01 a left outer join lhc02 b on a.id=b.id where b.id=2;
2,select * from lhc01 a left outer join lhc02 b on a.id=b.id and b.id=2;
3,select * from lhc01 a left outer join (select * from lhc02 where id=2) b on a.id=b.id;
其实如果理解sql的执行步骤这三条就很容易理解啦。
第1条相当于在“一”结果中筛选也b.id=2记录
结果:
id uid id uid
2 1 2 1
第2与第3的结果是一样的,只是第3条sql是先将lhc02进行了筛选,而第2条sql是在“一"的结果中将lhc02进行筛选。
id uid id uid
3 1 NULL NULL
2 1 2 1
1 1 NULL NULL
4 1 NULL NULL
1 2 NULL NULL
3 2 NULL NULL
三,再看下这三条语句
1,select * from lhc01 a left outer join lhc02 b on a.id=b.id where a.id=1;
2,select * from (select * from lhc01 where id=1) a left outer join lhc02 b on a.id=b.id ;
3,select * from lhc01 a left outer join lhc02 b on a.id=b.id and a.id=1;
第1与第2结果一样。
id uid id uid
1 1 1 2
1 2 1 2
而第3条sql结果如下:
id uid id uid
3 1 NULL NULL
2 1 NULL NULL
1 1 1 2
4 1 NULL NULL
1 2 1 2
3 2 NULL NULL
从上面几条语句可得出,不管是left outer join 还是 right outer join 对于主表来说条件筛选不要与on放一起,而非主表的条件筛选则不要与where放一起,这样得出的结果才是我们预期想要的,当然如果被用到的表数据量过大,建议都使用子查询的方式进去select。
总结的很简陋,请各位高手多拍砖!!
- left outer join 的简单总结
- left join 和 left outer join 的区别的总结
- left outer join 的真谛
- left outer join,inner join,right outer join的区别
- sql left join right join outer join 执行步骤总结
- SQL中 inner join、 left outer join 、right outer join、 full outer join之间的区别
- inner join,outer join,left join,right join的区别
- inner join,outer join,left join,right join的区别
- inner join,outer join,left join,right join的区别
- left join,right join,inner join,outer join的用法
- Inner join,outer join,left join,right join的区别
- Inner join,outer join,left join,right join的区别
- left join 和 left outer join 的区别
- Left Join 和Left Outer Join 的比较
- left join 和 left outer join 的区别
- left join 和 left outer join 的区别
- left join 和 left outer join 的区别
- left join 和 left outer join 的区别
- sqlserver 转义字符
- android 混淆配置proguard 原理
- 2013新炬数据库大师高校巡讲会—华南理工大学工程硕士专场
- JQuery选择器1
- 培根人生论之论消费
- left outer join 的简单总结
- C#中的where泛型约束中的new()
- TOJ 3051
- XP上手工创建Oracle10g数据库
- 批量启用AD中已存在账户的Exchange 邮箱
- cell 加 图片
- coco2d-x 3.0在xcode中的配置
- 判断是否为素数
- make menuconfig 出错