MySQL讲义第27讲——select 查询之自连接查询

文章目录

  • MySQL讲义第27讲——select 查询之自连接查询
    • 一、数据准备
    • 二、对自连接的理解
    • 三、把以上的查询用自连接表示

顾名思义,自连接查询就是一张表和自己进行连接。就是把一张表看成两张表,使用别名进行区分。

一、数据准备

创建一张员工(emp)表,每个员工都有一个部门领导(leader),数据如下:

mysql> select * from emp;
+------+-----------+--------+---------+--------+
| e_id | e_name    | gender | salary  | leader |
+------+-----------+--------+---------+--------+
| 1101 | 张美华    | 女     | 5000.00 |   1104 |
| 1102 | 王涛      | 男     | 5200.00 |   1104 |
| 1103 | 张学有    | 男     | 4700.00 |   1104 |
| 1104 | 刘得华    | 男     | 5200.00 |   1104 |
| 1105 | 董雯花    | 女     | 5900.00 |   1104 |
| 1106 | 宋族营    | 男     | 6500.00 |   1104 |
| 2201 | 李霜江    | 男     | 7200.00 |   2202 |
| 2202 | 梁美丽    | 女     | 6400.00 |   2202 |
| 2203 | 王大强    | 男     | 6100.00 |   2202 |
| 3301 | 张美华    | 女     | 7800.00 |   1104 |
| 3302 | 赵紫龙    | 男     | 6900.00 |   1104 |
| 3303 | 诸葛量    | 男     | 9200.00 |   1104 |
| 3304 | 曹梦德    | 男     | 8400.00 |   1104 |
+------+-----------+--------+---------+--------+
13 rows in set (0.00 sec)

二、对自连接的理解

为了更好地理解自连接,根据 emp 表创建一个和 emp 中的数据完全相同的视图,视图名称为 leader。

mysql> CREATE VIEW leader-> AS-> SELECT-> *-> FROM -> emp;
Query OK, 0 rows affected (0.04 sec)mysql> select * from leader;
+------+-----------+--------+---------+--------+
| e_id | e_name    | gender | salary  | leader |
+------+-----------+--------+---------+--------+
| 1101 | 张美华    | 女     | 5000.00 |   1104 |
| 1102 | 王涛      | 男     | 5200.00 |   1104 |
| 1103 | 张学有    | 男     | 4700.00 |   1104 |
| 1104 | 刘得华    | 男     | 5200.00 |   1104 |
| 1105 | 董雯花    | 女     | 5900.00 |   1104 |
| 1106 | 宋族营    | 男     | 6500.00 |   1104 |
| 2201 | 李霜江    | 男     | 7200.00 |   2202 |
| 2202 | 梁美丽    | 女     | 6400.00 |   2202 |
| 2203 | 王大强    | 男     | 6100.00 |   2202 |
| 3301 | 张美华    | 女     | 7800.00 |   1104 |
| 3302 | 赵紫龙    | 男     | 6900.00 |   1104 |
| 3303 | 诸葛量    | 男     | 9200.00 |   1104 |
| 3304 | 曹梦德    | 男     | 8400.00 |   1104 |
+------+-----------+--------+---------+--------+
13 rows in set (0.00 sec)

然后根据 emp 表和视图 leader 创建连接,查询结果如下:

mysql> SELECT -> e.e_id,-> e.e_name emp_name,-> e.gender,-> e.salary,-> l.leader leader_id,-> l.e_name leader_name-> FROM-> emp e JOIN leader l ON e.leader = l.e_id;
+------+-----------+--------+---------+-----------+-------------+
| e_id | emp_name  | gender | salary  | leader_id | leader_name |
+------+-----------+--------+---------+-----------+-------------+
| 1101 | 张美华    | 女     | 5000.00 |      1104 | 刘得华      |
| 1102 | 王涛      | 男     | 5200.00 |      1104 | 刘得华      |
| 1103 | 张学有    | 男     | 4700.00 |      1104 | 刘得华      |
| 1104 | 刘得华    | 男     | 5200.00 |      1104 | 刘得华      |
| 1105 | 董雯花    | 女     | 5900.00 |      1104 | 刘得华      |
| 1106 | 宋族营    | 男     | 6500.00 |      1104 | 刘得华      |
| 2201 | 李霜江    | 男     | 7200.00 |      2202 | 梁美丽      |
| 2202 | 梁美丽    | 女     | 6400.00 |      2202 | 梁美丽      |
| 2203 | 王大强    | 男     | 6100.00 |      2202 | 梁美丽      |
| 3301 | 张美华    | 女     | 7800.00 |      1104 | 刘得华      |
| 3302 | 赵紫龙    | 男     | 6900.00 |      1104 | 刘得华      |
| 3303 | 诸葛量    | 男     | 9200.00 |      1104 | 刘得华      |
| 3304 | 曹梦德    | 男     | 8400.00 |      1104 | 刘得华      |
+------+-----------+--------+---------+-----------+-------------+
13 rows in set (0.00 sec)

三、把以上的查询用自连接表示

以上基于 emp 表和 leader 视图的连接要转换为自连接,只需要把视图换成 emp 表,并指定一个别名即可,代码如下:

mysql> SELECT-> e.e_id,-> e.e_name emp_name,-> e.gender,-> e.salary,-> l.leader leader_id,-> l.e_name leader_name-> FROM-> emp e JOIN emp l ON e.leader = l.e_id;
+------+-----------+--------+---------+-----------+-------------+
| e_id | emp_name  | gender | salary  | leader_id | leader_name |
+------+-----------+--------+---------+-----------+-------------+
| 1101 | 张美华    | 女     | 5000.00 |      1104 | 刘得华      |
| 1102 | 王涛      | 男     | 5200.00 |      1104 | 刘得华      |
| 1103 | 张学有    | 男     | 4700.00 |      1104 | 刘得华      |
| 1104 | 刘得华    | 男     | 5200.00 |      1104 | 刘得华      |
| 1105 | 董雯花    | 女     | 5900.00 |      1104 | 刘得华      |
| 1106 | 宋族营    | 男     | 6500.00 |      1104 | 刘得华      |
| 2201 | 李霜江    | 男     | 7200.00 |      2202 | 梁美丽      |
| 2202 | 梁美丽    | 女     | 6400.00 |      2202 | 梁美丽      |
| 2203 | 王大强    | 男     | 6100.00 |      2202 | 梁美丽      |
| 3301 | 张美华    | 女     | 7800.00 |      1104 | 刘得华      |
| 3302 | 赵紫龙    | 男     | 6900.00 |      1104 | 刘得华      |
| 3303 | 诸葛量    | 男     | 9200.00 |      1104 | 刘得华      |
| 3304 | 曹梦德    | 男     | 8400.00 |      1104 | 刘得华      |
+------+-----------+--------+---------+-----------+-------------+
13 rows in set (0.00 sec)

MySQL讲义第27讲——select 查询之自连接查询相关推荐

  1. MySQL讲义第 39 讲——select 查询之函数(2):日期时间型函数

    MySQL讲义第39讲--select 查询之函数(2):日期时间型函数 文章目录 MySQL讲义第39讲--select 查询之函数(2):日期时间型函数 一.数据准备 二.MySQL 日期时间型函 ...

  2. MySQL讲义第 41 讲——select 查询之函数(4):流程控制函数

    MySQL讲义第41讲--select 查询之函数(4):流程控制函数 文章目录 MySQL讲义第41讲--select 查询之函数(4):流程控制函数 一.数据准备 二.MySQL 流程控制函数介绍 ...

  3. MySQL讲义第 33 讲——select 查询之静态交叉表查询

    MySQL讲义第 33 讲--select 查询之静态交叉表查询 文章目录 MySQL讲义第 33 讲--select 查询之静态交叉表查询 一.数据准备 二.交叉表的形式 三.静态交叉表的实现 1. ...

  4. MySQL讲义第 40 讲——select 查询之函数(3):数学函数

    MySQL讲义第40讲--select 查询之函数(3):数学函数 文章目录 MySQL讲义第40讲--select 查询之函数(3):数学函数 一.数据准备 二.MySQL 数学函数介绍 1.ABS ...

  5. MySQL讲义第 35 讲——select 查询之正则表达式

    MySQL讲义第 35 讲--select 查询之正则表达式 文章目录 MySQL讲义第 35 讲--select 查询之正则表达式 一.正则表达式匹配规则 二.数据准备 三.查询包含某些字符的字段信 ...

  6. MySQL讲义第 32 讲——select 查询之 select 语句的执行顺序

    MySQL讲义第 32 讲--select 查询之 select 语句的执行顺序 文章目录 MySQL讲义第 32 讲--select 查询之 select 语句的执行顺序 一.SELECT 语句的语 ...

  7. MySQL讲义第 30 讲——select 查询之子查询

    MySQL讲义第 30 讲--select 查询之子查询 文章目录 MySQL讲义第 30 讲--select 查询之子查询 一.标量子查询 1.查询高于所有员工平均工资的员工信息 2.查询工资比王涛 ...

  8. MySQL讲义第 36 讲——select 查询之 INTO OUTFILE参数

    MySQL讲义第 36 讲--select 查询之 INTO OUTFILE参数 文章目录 MySQL讲义第 36 讲--select 查询之 INTO OUTFILE参数 一.SELECT ... ...

  9. MySQL讲义第 31 讲—— DML 语句与 select 查询

    MySQL讲义第 31 讲-- DML 语句与 select 查询 文章目录 MySQL讲义第 31 讲-- DML 语句与 select 查询 一. INSERT ... SELECT 语句 二.D ...

最新文章

  1. Effective STL 为包含指针的关联容器指定比较类型
  2. Git fetch和git pull的区别
  3. 3月12日云栖精选夜读:操作阿里云Kibana
  4. PowerBI随笔(3)-增加自定义列
  5. 最近任务-2012.05.14
  6. dataframe 筛选_Spark.DataFrame与Spark.ML简介
  7. 2013江苏计算机二级vfp试题,2013年3月全国计算机二级VFP真题
  8. mysql 11.2.16_Navicat for MySQL 11.2
  9. 使用Postman访问OAuth2保护的WebAPI
  10. .Net读取Excel(包括Excel2007)
  11. apache多域名403配置
  12. 质性数据分析软件NVivo的许可
  13. 全球及中国冻干菠萝行业市场运行模式及未来发展前景分析报告2022-2028年
  14. WinRAR 4.01 key!注册文件 注册码
  15. [C#] NAudio 各种常见使用方式 播放 录制 转码 音频可视化
  16. GBase 8c亮相国内首款金融数据库性能测试工具开源发布会
  17. COLD:中文冒犯性语言检测数据集
  18. 【JZOJ 5776】【NOIP2008模拟】小x游世界树 (树)
  19. 1033 旧键盘打字 (20分)
  20. 到底买苹果XS还是XR_苹果xs和苹果xr内部相爱相杀:队友之间该如何选择?

热门文章

  1. solr学习之solrj
  2. 你真正了解低代码么?(国内低代码平台状况分析)
  3. 基于web新闻发布系统设计与实现
  4. 机械考研专业课需要买模拟卷吗?
  5. CTF:PHP MD5绕过和序列化漏洞
  6. OAuth使用教程(一):初识OAuth
  7. 《Linux就那么学》虚拟机安装配置及系统和配置的全过程
  8. 维吉尼亚密码 php,python小脚本之维吉尼亚密码
  9. pcie equalization学习笔记后续再整理
  10. opendir/readdir/closedir函数