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

1demo建表
-- 人事表
CREATE TABLE Man(
Man_Id TINYINT ,
Man_Name VARCHAR ( 10 ),
Zw_Id TINYINT );
-- 职务表
CREATE TABLE Zw(
Zw_Id TINYINT ,
Zw_Name VARCHAR ( 10 ));
-- 工资表
CREATE TABLE GZ(
Man_Id TINYINT ,
Money VARCHAR ( 10 ),
Sex_Id TINYINT );
-- 性别表
CREATE TABLE xb(
Sex_Id TINYINT ,
Sex_Name VARCHAR ( 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 z ON x. Sex_Id=z. Zw_Id;

3_SELECT * FROMgz g LEFT JOIN xb x ONg. Sex_Id=x. Sex_Id LEFT JOINzw z ON 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值