MySQL之多表查询自连接方式

 更新时间:2024年09月05日 09:18:49   作者:岁岁岁平安  
这篇文章主要介绍了MySQL之多表查询自连接方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、引言

自连接,顾名思义就是自己连接自己。

自连接的语法结构:

表 A 别名 A join 表 A 别名 B ON 条件 ...;

注意:

  • 1、这种语法有一个关键字:join
  • 2、自连接查询可以是内连接的语法,可以是外连接的语法(当然包括左外连接和右外连接)

接下来去工具 DataGrip 通过两个需求去演示一下 自连接查询 的语法。

二、实操

(0)两张表的结构以及数据展示

  • 员工表 emp

  • 部门表 dept

(1)查询员工及其所属领导的名字

1、分析

在表 emp 中没有直接的表示出某某的直属领导是谁,只有一个所属领导id号(managerid)

而对于一个企业的领导,它也是企业的员工。

表结构:emp。

单靠单表查询是不可能完成所要的需求的。所以要对自己进行子连接查询。

把emp看成两张表:员工表和领导表(仔细深思一下)

这就是它们之间的编写思路

2、编写SQL语句

/*类似于内连接,有null 的值时没有显示*/
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语句

/*查出直属领导为 null 也要显示*/
SELECT a.name AS '员工',b.name AS '领导' FROM emp AS a LEFT OUTER JOIN emp AS b ON a.managerid=b.id;

这样就通过两个自连接查询完成两个需求。

在自连接查询的时候,一定注意要给表名起别名。

要不然我们会不清楚条件,以及返回的字段到底是哪一张表当中的字段。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql最新版8.0.17解压版安装教程

    mysql最新版8.0.17解压版安装教程

    这篇文章主要为大家详细介绍了最新版mysql 8.0.17 解压版安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • mysql 5.7.18 winx64密码修改

    mysql 5.7.18 winx64密码修改

    这篇文章主要介绍了mysql 5.7.18 winx64安装完成后如何对密码进行修改,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • windows下在一台机器上安装两个MYSQL数据库的方法

    windows下在一台机器上安装两个MYSQL数据库的方法

    正常安装第一个mysql,在控制面板里停止第一个mysql服务,将C:\Program Files\MySQL目录下的所有目录和文件copy到另外一个路径,我这里是copy到E盘
    2013-10-10
  • MySQL pt-query-digest从安装到实战的慢查询优化实战指南

    MySQL pt-query-digest从安装到实战的慢查询优化实战指南

    本文介绍了pt-query-digest工具的安装、配置、核心原理和实战应用,包括慢查询分析步骤、常见场景命令模板及使用技巧,通过合理配置和分析,能够有效提升MySQL性能,感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • MySQL中的乐观锁,悲观锁和MVCC全面解析

    MySQL中的乐观锁,悲观锁和MVCC全面解析

    这篇文章主要介绍了MySQL中的乐观锁和悲观锁和MVCC全面解析的相关资料,帮助大家更好的理解和学习MySQL数据库,感兴趣的朋友可以了解下
    2021-01-01
  • mysql列转行以及年月分组实例

    mysql列转行以及年月分组实例

    下面小编就为大家带来一篇mysql列转行以及年月分组实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • MySQL如何选择合适的索引

    MySQL如何选择合适的索引

    这篇文章主要介绍了MySQL如何选择合适的索引,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Mysql5.7中使用group concat函数数据被截断的问题完美解决方法

    Mysql5.7中使用group concat函数数据被截断的问题完美解决方法

    前几天在项目中遇到一个问题,使用 GROUP_CONCAT 函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题。后来查找出原因,解决方法大家跟随脚本之家小编一起看看吧
    2018-03-03
  • MySQL执行SQL文件的常见场景与方法

    MySQL执行SQL文件的常见场景与方法

    MySQL 作为世界上最流行的开源关系型数据库管理系统,在日常开发和运维工作中扮演着重要角色,本文主要介绍了MySQL 执行 SQL 文件的主要方法与场景,希望对大家有所帮助
    2025-06-06
  • 通过MySQL慢查询优化MySQL性能的方法讲解

    通过MySQL慢查询优化MySQL性能的方法讲解

    今天小编就为大家分享一篇关于通过MySQL慢查询优化MySQL性能的方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03

最新评论