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

来源:互联网 发布:啾米网络是培训机构吗? 编辑:程序博客网 时间:2024/06/05 04:03
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 gLEFT JOIN xb x ONg.Sex_Id=x.Sex_Id;

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

3_SELECT*FROMgz gLEFT JOIN xb x ONg.Sex_Id=x.Sex_Id LEFT JOINzw zONg.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语法解析与性能分析

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

原创粉丝点击