关闭

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

标签: mysql
43人阅读 评论(0) 收藏 举报
分类:
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语法解析与性能分析

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:124次
    • 积分:21
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    最新评论