前言

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:

scott建表及录入数据sql脚本

一.需求

找到直接及简介(即JONES下属的下属)为JONES工作的所有员工。

JONES下属的员工列表如下所示:

±------±-----+| ename | lvl |±------±-----+| JONES | 1 || SCOTT | 2 || FORD | 2 || ADAMS | 3 || SMITH | 3 |±------±-----+

对于这个解决方案,不需要特殊的格式设置。目标只是返回位于员工JONES下属的所有员工,其中包括JONES自己。

这种类型的查询展示了递归SQL拓展的有用性,如Oracle的connect by和SQL Server/DB 2/MySQL 8.0的with子句等。

with recursive emp2(ename,empno,lvl) as(SELECT ename,empno,1 lvl from emp  where ename = 'JONES'union ALLselect e1.ename,e1.empno,lvl + 1 from emp e1,emp2 e2 where e1.mgr = e2.empno)select ename,lvl from emp2
mysql> with recursive emp2(ename,empno,lvl) as -> ( -> SELECT ename,empno,1 lvl -> from emp -> where ename = 'JONES' -> union ALL -> select e1.ename,e1.empno,lvl + 1 -> from emp e1,emp2 e2 -> where e1.mgr = e2.empno -> ) -> select ename,lvl from emp2;+-------+------+| ename | lvl |+-------+------+| JONES | 1 || SCOTT | 2 || FORD | 2 || ADAMS | 3 || SMITH | 3 |+-------+------+5 rows in set (0.01 sec)

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Linux下MYSQL 5.7 找回root密码的问题(亲测可用)
  3. MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
  4. [RK3399][Android7.1.1] WifiAp:开机默认打开wifi热点
  5. Android(安卓)Studio bug - attribute 'android:versionCode' no
  6. Android获取设备唯一标识完美解决方案
  7. android从服务器下载文件(php+apache+win7+MySql)
  8. Android(安卓)启动Tomcat服务报错,端口占用解决方案
  9. 【学习Android遇到的错误】关于Unable to instantiate activity

随机推荐

  1. 详细介绍XML代码编写的编码与验证问题
  2. XSLT语法—在.net中使用XSLT转换xml文档
  3. XML中的DTD文档类型定义详细介绍
  4. XmlSerializer 对象的Xml序列化和反序列
  5. XML编程中的模式定义XSD示例代码详解
  6. XML中的树形结构与DOM文档对象模型的示例
  7. XPath语法: 在C#中使用XPath示例的具体代
  8. 详解通过XmlDocument读写Xml文档的示例代
  9. 详细介绍使用XmlWriter写Xml的示例代码
  10. XML—尝试对一个XML文档进行增删查改编程