关闭

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

标签: mysql
179人阅读 评论(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
查看评论

论SQL语句中的Left join-多表关系

论SQL语句中的多表关系,以及实际作用 一对多 - 用于去重 - left join 要连接的表 on 唯一字段(标识) = 多字段 一对一 - 用于查询 - left join 要连接的表 on 唯一字段 = 唯一字段 多对一 - 用于分组 - left join 要连接的表 on 多字段 = 唯...
  • taotaojs
  • taotaojs
  • 2017-12-15 21:49
  • 178

LEFT JOIN 和JOIN 多表连接

四张表contract 、customer、customer3、customer4: 这是比较熟悉的3张表的连接 SELECT * FROM test.contract a JOIN test.customer b ON a.Num = b.Num2 JOIN test.cus...
  • mccand1234
  • mccand1234
  • 2016-06-22 15:37
  • 6148

left join on 多个表的时候的表示方法

select   *   from table1   left   join   table2   on &#...
  • jintianhen1
  • jintianhen1
  • 2014-01-08 17:03
  • 3611

Sql语句用left join 解决多表关联问题(关联套关联,例子和源码)

帖子是原创是,但是在csdn中高手帮我给解决了,其实就是别名,给自己上了一堂别名的课,所谓别人是高手,其实就是自己是菜鸟吧! 表1:------------------------------ 【人事表】      表名:【Ma...
  • dxnn520
  • dxnn520
  • 2012-12-11 11:08
  • 52092

多个连续的left join连接顺序验证

在实际工作中,很多情况下会用到外连接,尤其是做主页面的数据展示查询时,连续用到多个left join会很常见,这样的多个left join会怎么样执行呢,之前在网上查到的执行顺序是,顺序的从坐到右的连接表,例如有 a,b,c三张表的数据都需要查到,就需要进行连接查询,如 select *  ...
  • zkdceo
  • zkdceo
  • 2017-04-19 18:56
  • 6722

Access Left Outer Join 关联多个表

Access 支持三表或三表以上的 join 操作,但是要加括号,一层一层 JOIN 下去 例子: 1、SELECT * from XXas a left outer join YY as b  on a.URL=b.URL  2、SELECT * from (XXas a...
  • wang_cel
  • wang_cel
  • 2014-03-07 15:34
  • 1835

SQL 关于LEFT JOIN关键字解析(多表查询)

SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。 LEFT JOIN 关键字语法 SELECT column_name(s) FROM table_name1 LEFT...
  • yh88356656
  • yh88356656
  • 2015-10-21 12:27
  • 2645

left join 多个表

举个例子 A left join b on a.id=b.id 这样连接的话,系统会先用表A和表B做个笛卡儿积,然后以表A为基表,去掉笛卡儿积中表A部分为NULL的记录。最后形成你的联结的结果。   A表内容: 代号   品名 A1    一 A2    二...
  • limuzi13
  • limuzi13
  • 2014-09-10 11:18
  • 863

left join 和 left outer join 的区别 通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right jo

left join 和 left outer join 的区别 通俗的讲:     A   left   join   B   的连接的记录...
  • tianyeming
  • tianyeming
  • 2017-06-22 18:50
  • 1076

oracle 多个表 join 的先后顺序

select a.* ,b.*   from  a  inner join b   on a.aid=b.bid  right outer join  c on c.cid =a.aid left ou...
  • caolaosanahnu
  • caolaosanahnu
  • 2012-10-17 11:04
  • 9873
    个人资料
    • 访问:1053次
    • 积分:174
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类