sqlFROM多表时同时做为leftjoin总结
创建三个表
create table temp1
(
aid      VARCHAR(5) not null,
car      VARCHAR(10) not null
);
create table temp2
(
bid      VARCHAR(5) not null,
username      VARCHAR(10) not null
)
;
create table temp3
(
cid        VARCHAR(5) not null,
dogname      VARCHAR(10) not null
);
insert into temp1(aid,car) values('001','benz');
insert into temp1(aid,car) values('001','BMW');
insert into temp1(aid,car) values('001','ford');
insert into temp1(aid,car) values('001','jeep');
insert into temp1(aid,car) values('002','jeep');
insert into temp1(aid,car) values('003','hongqi');
insert into temp2(bid,username) values('001','mayun');
insert into temp3(cid,dogname) values('001','lily');
insert into temp3(cid,dogname) values('001','lucy');
insert into temp3(cid,dogname) values('002','xiaohua');
先说执⾏顺序: 逻辑上⼀个query的执⾏顺序(不是实际)
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE or WITH ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP
说是“逻辑上” 顺序,因为实际执⾏时还要看索引,数据分布等,看最终优化器如何处理,最真实的顺序肯定是执⾏计划展⽰的顺序。执⾏:
select * from temp2 a2,temp1 a1 left join temp3 a3 on a1.aid=a3.cid where a1.aid=a3.cid;
分析:通过on过滤,left join就近连a1表,之后⽣成临时表,和a2⼀起参与where。
结果:
sql left join 多表连接执⾏:select * from temp2 a2,temp1 a1 left join temp3 a3 on a1.aid=a3.cid where a2.bid=a3.cid;结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。