ArcProDreLHh的博客

撸码到高潮

对 left join 多个表的join 和 on 的分析Demo

1demo建表
--人事表
CREATE TABLEMan(
Man_IdTINYINT,
Man_NameVARCHAR(10),
Zw_IdTINYINT);
--职务表
CREATE TABLEZw(
Zw_IdTINYINT,
Zw_NameVARCHAR(10));
--工资表
CREATE TABLEGZ(
Man_IdTINYINT,
MoneyVARCHAR(10),
Sex_IdTINYINT);
--性别表
CREATE TABLExb(
Sex_IdTINYINT,
Sex_NameVARCHAR(10));
插入的数据





2_讨论多个left join之间的关系
1_SELECT*FROMgz g LEFT JOIN xb x ONg.Sex_Id=x.Sex_Id;

2_SELECT*FROMgz g LEFT JOIN xb x ONg.Sex_Id=x.Sex_Id LEFT JOINzw zON x.Sex_Id=z.Zw_Id;

3_SELECT*FROMgz g LEFT JOIN xb x ONg.Sex_Id=x.Sex_Id LEFT JOINzw zON g.Sex_Id=z.Zw_Id;


总结
多个left join 分析ABC 三表
当 A和B left join时 on的条件是表达A和B之间的关系的 ,紧接着在leftjoin C那么其实主要看on后面的条件.
ON 后是A和C之间的关系关联 那么 有可能在第一步A和B的交集不属于第二个A和C之间的交集所以会造成 图3中中间部分的null的产生, A + (A∩B)∩(A∩C)
同理图二最后出现的两个null 是因为 A和C 的交集 交上 B和C的交集只有一个结果 :A + (A∩B)∩(B∩C)
两种情况是不同的 ,所以在企业开发的时候需要注意!!

Mysql Join语法解析与性能分析

最后感谢大家阅读,希望大家留言讨论!

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ArcProDreLHh/article/details/78227245
文章标签: mysql
个人分类: SQL
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭