目录
- 一、引言
- 二、实操
- 总结
一、引言
自连接,顾名思义就是自己连接自己。
自连接的语法结构:
表 A 别名 A join 表 A 别名 B ON 条件 ...;
注意:
- 1、这种语法有一个关键字:join
- 2、自连接查询可以是内连接的语法,可以是外连接的语法(当然包括左外连接和右外连接)
接下来去工具 DataGrip 通过两个需求去演示一下 自连接查询 的语法。
二、实操
(0)两张表的结构以及数据展示
- 员工表 emp
- 部门表 dept
(1)查询员工及其所属领导的名字
1、分析
在表 emp 中没有直接的表示出某某的直属领导是谁,只有一个所属领导id号(managerid)
而对于一个企业的领导,它也是企业的员工。
表结构:emp。
单靠单表查询是不可能完成所要的需求的。所以要对自己进行子连接查询。
把emp看成两张表:员工表和领导表(仔细深思一下)
这就是它们之间的编写思路
2、编写SQL语句
SELECT a.name,b.name FROM emp AS a JOIN emp AS b WHERE a.managerid=b.id;
(2)直询所有员工emp及其领导的名字emp ,如果员工没有领导,也需要查询出来。
1、分析
如果这个员工的字段 managerid = null ,也需要把这个员工查询出来。
这时只能用到外连接
因为内连接只能查询到交集的数据,外连接才会包含左表或者右表的数据
表结构:emp a , emp b
2、编写SQL语句
SELECT a.name AS '员工',b.name AS '领导' FROM emp AS a LEFT OUTER JOIN emp AS b ON a.managerid=b.id;
这样就通过两个自连接查询完成两个需求。
在自连接查询的时候,一定注意要给表名起别名。
要不然我们会不清楚条件,以及返回的字段到底是哪一张表当中的字段。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网(www.lsjlt.com)。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java 写小程序都用到了哪些技术呢?(java写小程序用到的技术有哪些)
- Java 动态数据源切换的方法究竟有哪些?(java动态数据源切换的方法是什么)
- JavaScript函数式编程的亮点有哪些?(JavaScript函数式编程有啥亮点)
- 如何保障 Java 应用程序的安全性?(Java应用程序的安全性如何保障)
- Java 中 aspect 关键字的作用范围是怎样的?(java aspect关键字的作用范围)
- Java 中 BigDecimal 的使用方法究竟有哪些?(java中bigdecimal的使用方法是什么)
- 掌握PHP数据类型转换的技巧:确保准确性
- 在 Java 中,class 类究竟有哪些具体的用法呢?(java中class类的用法是什么)
- Java 中变量的类型究竟有哪些呢?(java中变量的类型有哪些)
- Java 中创建新文件的文件锁定策略有哪些?(Java createnewfile的文件锁定策略)