今天这个帖子要解决一个问题:oracle数据库表间通过left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on 下去?
利用sqlfiddle创建三张基本表结构先:

create table company(company_id int,company_name varchar2(10),department_id int,employee_id int);
create table department(department_id int,department_name varchar(10));
create table employee(employee_id int,employee_name varchar(10));
insert into company values(1,'HSBC',101,1001);
insert into department values(101,'IT');
insert into employee values(1001,'Steve');
select * from company;
select * from department;
select * from employee;


为了印证,我写下了如下代码:

select t1.*,t2.department_name,t3.employee_name
from company t1
left join department t2
on t1.department_id=t2.department_id
left join employee t3
on t1.employee_id=t3.employee_id;


结果是可以出来预想的结果的,也就是说left join是右边表向左join过程实际上是合并的过程,再继续left join新表的时候实际上是前面所有集合向新表抛出on. 随着left join一路向左,并非只能是最左边的关联表与新表关联,其实母表可以一直on 下去

另外,顺表解决一个疑问,left join关联的时候,左边表join on的字段value集大于右边表,拼合成的表如何取值?是保留左边所有value集,右边没有就为空吗?
譬如新增一条记录:

insert into company values(1,'HSBC',102,1001);


没错,left join关联的时候,左边表join on的字段value集大于右边表,拼合成的表是保留左边所有value集,右边没有就为空。

反之,left join关联的时候,左边表join on的字段value集小于右边表,拼合成的表如何取值?是只取左边所有value集,右边多出来的value集不取?

insert into employee values(1002,'Luke');


结论:反之,left join关联的时候,左边表join on的字段value集小于右边表,拼合成的表是只取左边所有value集,右边多出来的value集不取。

最后,借楼反馈下 left join /join /where连接表间关系的区别:
select t1.column,t2.column
from t1
left join t2
on
t1.indexno=t2.indexno;
这个意思是以右边表为主表,关联左边t2表,如果t2.indexno能有1个match则取这一行的t2.column,如果有超过1个match的,那么t1主表开始膨胀。如果0个match,那么t1.indexno依然出现在查询结果,只是t2.column出现null值;

join 则不然,
select t1.column,t2.column
from t1
join t2
on
t1.indexno=t2.indexno;
这个意思t1表和t2表相互关联,如果t2.indexno能有1个match则取这一行的t2.column,如果有超过1个match的,那么表开始膨胀。如果0个match,那么t1和t2取全集然后去掉空的记录;
where和join相同原理。

sql 语句left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on下去?相关推荐

  1. 试用SQL语句创建一个工资总额超过20万元(含20万元)的各部门工资总额视图V-SAL...

    2010年5月21日星期五 设有关系模式:EMP(职工号,姓名,工资,部门号) 试用SQL语句创建一个工资总额超过20万元(含20万元)的各部门工资总额视图V-SAL. select 部门号,sum( ...

  2. 一条SQL语句查询当前数据库下有多少张表

    SELECT COUNT(*) FROM `information_schema`.`TABLES` WHERE table_schema=(SELECT DATABASE())

  3. Hibernate使用原生SQL语句(left join左连接查询)

    Hibernate使用原生SQL语句 以下是本人对Hibernate使用原生SQL语句的理解: 在项目开发当中使用Hibernate提供的HQL有时候不能满足需求,尤其是多表查询或者是多表中没创建主外 ...

  4. MySQL面试2:一张学生表,一张教师表,里面都有Name和Code,写出张三的老师有多少名学生的SQL语句。

    在Mysql面试的写SQL语句环节中,有人曾碰到了这样一道这样的一道SQL语句题.目前有两张数据表,一张学生,一张老师表.里面都有Name和Code两个字段.求出张三的老师一共有多少名学生. 这样,我 ...

  5. MySQL经典面试题--SQL语句

    备注:建立下面的每一个题目对应的表,插入案例数据,然后执行需要的 SQL ,将结果复制到 word 文件中 MYSQL经典面试题,后面有建表过程和SQL执行语句  有道云连接 https://note ...

  6. MS-SQL Server 基础类 - SQL语句

      网址收藏夹 免费申请! 首页 |收藏夹 | 笑话 | 贴吧 | 交友 | 留言 | 软件 | 超市 | 网页特效 | 酷站导航 | 论坛 新闻 | 同学录 | 图片 | 跑商 | 动画 | 音乐 ...

  7. sql语句优化之SQL Server

    MS   SQL   Server查询优化方法 查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)          2.I/O吞吐量小,形成 ...

  8. MySQL 数据库 之 高级 SQL 语句(常用查询,正则表达式,运算符,库函数,存储过程)

    文章目录 前言 一 . 常用查询介绍 1.按关键字排序 1.1默认升序 1.2 降序 1.3 多字段的排序 2. 对结果进行分组 2.1 分组统计 3.限制结果条目 3.1 查看前4行 3.2 查看第 ...

  9. MySql数据库SQL语句小结

    数据库概述 什么是数据库? 什么是关系型数据库? 数据库相关概念 什么是SQL语言? 连接mysql服务器 数据库及表操作 创建.删除.查看数据库 创建.删除.查看表 新增.更新.删除表记录 查询表记 ...

最新文章

  1. unordered_map的使用特性
  2. 自动化测试框架:自动化测试呼唤开发
  3. centos-stream-9安装chrome谷歌浏览器
  4. 都说「跳一跳」是微信抄袭了育碧,万万没想到,他们在一起了!
  5. VS2015+Opencv3.2配置(一次配好)
  6. 【优化选址】基于matlab穷举法求解小区基站选址优化问题【含Matlab源码 439期】
  7. 3S基础知识:MapX应用讲义—加载地图数据
  8. 仙剑制作人教你成为游戏人
  9. 安卓手机如何复制粘贴不重叠_复制的文字粘贴时怎么重叠了 - 卡饭网
  10. armlinux开发板用户自动登录
  11. 手机扫描识别Vin码识别
  12. 鼠标悬停,图片向四周放大效果
  13. 内网环境部署zabbix5.0版本监控(一)
  14. 历史经验之js个200经验收藏
  15. 云班课python测试答案_智慧职教云课堂APPPython程序设计题目答案
  16. 【Linux】Linux 磁盘与文件系统管理命令
  17. 如何提高Python代码的可读性?
  18. 看不到同一个网络下的其他计算机,看不到局域网其他计算机怎么办
  19. Mac搭建GO开发环境
  20. python-gif图生成

热门文章

  1. 如何成为智能合约开发者
  2. Data Binding: A godsend or the devil in disguise?
  3. 数字音频总线A2B开发详解十六(A2B-一主一从:ADAU1701作为全新Slave板的DSP)
  4. 数电课设,数电特殊字符大全(UC,AP,CL,rh)含原理图
  5. 一个邮件钓鱼木马的分析 (一)
  6. 7和7的倍数游戏答案_直播互动小游戏,块拿小本本记好
  7. ARM7、ARM9和ARM11的区别
  8. 好心情精神心理科:抑郁症,真的会让你变丑!
  9. 智慧电力可视化大屏,赋能虚拟电厂精准减碳
  10. 多系统linux系统引导修复工具,EasyBCD引导双系统|EasyBCD双系统引导修复工具 V2.4.0.237 中文免费版 下载_当下软件园_软件下载...