关于多表的leftJoin
来源:互联网 发布:淘宝如何延迟确认收货 编辑:程序博客网 时间:2024/06/18 14:01
建立表结构如下:
create table x.a (a1 int, a2 varchar(10));
create table x.b (b1 int, b2 varchar(10));
create table x.c (c1 int, c2 varchar(10));
insert into x.a values( 1 ,'haha');
insert into x.a values( 2 ,'ssss');
insert into x.a values( 4 ,'tttt');
insert into x.b values( 1 ,'cccc');
insert into x.c values( 2 ,'xxxx');
执行下面的两条left join:
select * from x.a a
left join x.b b on a.a1=b.b1
left join x.c c on a.a1=c.c1;
select * from x.a a
left join x.b b on a.a1=b.b1
left join x.c c on b.b1=c.c1;
实际上结果是不同的:
前者是:
1,haha,1,cccc,(null),(null)
2,ssss,(null),(null),2,xxxx
4,tttt,(null),(null),(null),(null)
后者是:
1,haha,1,cccc,(null),(null)
2,ssss,(null),(null),(null),(null)
4,tttt,(null),(null),(null),(null)
总结:
1. 无论left join怎么写,都是先用第一次left join的结果集,与第二个表进行left join。
2. 具体使用哪一种join方法,要依据表结构而定。
如果是a表中的某一个字段等于b表中的某一个字段,b表中的某一个字段等于c表中的某一个字段,那么我们就只能写成后一种形式。
如果是a表中的某一个字段等于b表中的某一个字段,a表中的某一个字段等于c表中的某一个字段,那么我们就需要考虑先join谁了。
create table x.a (a1 int, a2 varchar(10));
create table x.b (b1 int, b2 varchar(10));
create table x.c (c1 int, c2 varchar(10));
insert into x.a values( 1 ,'haha');
insert into x.a values( 2 ,'ssss');
insert into x.a values( 4 ,'tttt');
insert into x.b values( 1 ,'cccc');
insert into x.c values( 2 ,'xxxx');
执行下面的两条left join:
select * from x.a a
left join x.b b on a.a1=b.b1
left join x.c c on a.a1=c.c1;
select * from x.a a
left join x.b b on a.a1=b.b1
left join x.c c on b.b1=c.c1;
实际上结果是不同的:
前者是:
1,haha,1,cccc,(null),(null)
2,ssss,(null),(null),2,xxxx
4,tttt,(null),(null),(null),(null)
后者是:
1,haha,1,cccc,(null),(null)
2,ssss,(null),(null),(null),(null)
4,tttt,(null),(null),(null),(null)
总结:
1. 无论left join怎么写,都是先用第一次left join的结果集,与第二个表进行left join。
2. 具体使用哪一种join方法,要依据表结构而定。
如果是a表中的某一个字段等于b表中的某一个字段,b表中的某一个字段等于c表中的某一个字段,那么我们就只能写成后一种形式。
如果是a表中的某一个字段等于b表中的某一个字段,a表中的某一个字段等于c表中的某一个字段,那么我们就需要考虑先join谁了。
0 0
- 关于多表的leftJoin
- 关于多表的leftJoin
- sql里面leftjoin多表的问题记录
- yii2 leftjoin 不显示子表的属性
- laravel 解决leftjoin带条件查询没有返回右表为NULL的记录问题
- LeftJoin跟InnerJoin的一些研究
- MySQL下LeftJoin的性能优化
- SQL陷阱之leftjoin的where条件
- SQL leftjoin 和 right join的使用
- laravel中数据库查询leftJoin应注意的问题
- 不同的左外连接left join方式(+)及 LeftJoin 和 *=使用注意
- LeftJoin条件问题
- slightphp query sql leftjoin
- sql LeftJoin 用法详解
- LeftJoin 和 *=使用注意
- SQL join leftjoin right join
- MySQL LeftJoin优化未果问题
- 【SQL改写】notexists-leftjoin(distinct)whereisnull改写
- nyoj 586 疯牛(二分+贪心)
- php显示各种时间段
- IOS 中设置UITextView 显示文本的光标
- 不透明度兼容各个浏览器的用法
- Android UI设计的FrameLayout与TableLayout布局
- 关于多表的leftJoin
- 自适应网页设计
- To new is C++; To malloc is C; To mix them is sin (混淆C++中的new和C中的malloc是一种犯罪)
- Java内存泄露原因详解
- android反编译-smali语法
- mysqldump的几个主要选项
- fan54015 OTG/CHARGE 芯片调试时遇到的两个知识点
- UITabbarController 点击返回第一个视图
- 解决 schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/context