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中使用SHOW PROFILE命令分析性能的用法整理

    MySQL中使用SHOW PROFILE命令分析性能的用法整理

    这篇文章主要介绍了MySQL中使用show profile命令分析性能的用法整理,show profiles是数据库性能优化的常用命令,需要的朋友可以参考下
    2015-11-11
  • mysql中如何去除小数点后面多余的0

    mysql中如何去除小数点后面多余的0

    这篇文章主要介绍了mysql 中去除小数点后面多余的0的方法 ,需要的朋友可以参考下
    2014-03-03
  • MySQL数据类型优化原则

    MySQL数据类型优化原则

    这篇文章主要介绍了MySQL数据类型优化原则的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • 抽取oracle数据到mysql数据库的实现过程

    抽取oracle数据到mysql数据库的实现过程

    今天小编就为大家分享一篇关于抽取oracle数据到mysql数据库的实现过程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • MySQL 视图、函数和存储过程详解

    MySQL 视图、函数和存储过程详解

    视图、函数和存储过程都是 MySQL 中非常重要的数据库对象,它们可以提高数据库的效率和可重用性,使开发人员更加高效地处理数据,这篇文章主要介绍了MySQL 视图、函数和存储过程,需要的朋友可以参考下
    2023-04-04
  • linux mysql5.6版本的安装配置过程

    linux mysql5.6版本的安装配置过程

    mysql官网开始发布相关的5.6系列的各个版本,对于mysql5.6系列的版本对一起的版本进行了全局性的细节性加强
    2013-06-06
  • mysql分页时offset过大的Sql优化经验分享

    mysql分页时offset过大的Sql优化经验分享

    mysql分页是我们在开发经常遇到的一个功能,最近在实现该功能的时候遇到一个问题,所以这篇文章主要给大家介绍了关于mysql分页时offset过大的Sql优化经验,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起看看吧。
    2017-08-08
  • MySQL外键约束的禁用与启用命令

    MySQL外键约束的禁用与启用命令

    下面小编就为大家带来一篇MySQL外键约束的禁用与启用命令。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Mysql中group by 使用中发现的问题

    Mysql中group by 使用中发现的问题

    当使用MySQL的GROUP BY语句时,根据指定的列对结果进行分组,这种情况通常是由于在 GROUP BY 中选择的字段与其他非聚合字段不兼容,或者在 SELECT 子句中没有正确使用聚合函数所导致的,本文给大家介绍Mysql中group by 使用中发现的问题,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • mysql授予用户远程访问权限的实现

    mysql授予用户远程访问权限的实现

    在默认情况下,MySQL 数据库仅允许在本地主机上进行访问,如果您需要远程连接到 MySQL 数据库,您需要授予用户远程访问权限,本文就来
    2023-11-11

最新评论