mysql父行指那一行,MySQL中给定父行找到所有子行的解决方案
前言
备注:测试数据库版本为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 ALL
select 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)
总结
到此这篇关于MySQL中给定父行找到所有子行的文章就介绍到这了,更多相关MySQL给定父行找所有子行内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!
mysql父行指那一行,MySQL中给定父行找到所有子行的解决方案相关推荐
- css父相子绝 导航,CSS中的父相子绝布局
主要应用场景,就是我想要块的布局根据父级来定位,而不是根据页面. 例如,下面的例子中,我用两个半圆拼成一个正圆,思路是用一个父级标签把两个子标签包起来,父标签是一个正圆,然后子标签各占一半,先化成两个 ...
- 去除maven父依赖_如何在Maven中从父项目中排除依赖项?
我遇到了和你一样的问题. 在我的项目中,让我们称父pom为parent.pom. parent定义了log4j,slf4j是这样的: org.slf4j slf4j-api ${slf4j-api.v ...
- python 读取txt文件中满足要求的行写到新文件中_python_文本文件里面随机抽取若干行,写入新的文本文件里面...
原博文 2012-07-25 16:36 − 天一直阴沉沉的,真想早点下班啊...... 1 #encoding=utf-8 2 import random 3 from sets import Se ...
- mysql和sqlserver共存_mysql 和sqlserver的 多行合并成一行
mysql 和sqlserver的 多行合并成一行 mysql 多行合并: mysql 内置函数 group_concat(exper SEPARATOR " " ) expe ...
- mysql update多条件批量更新_Mybatis中进行批量更新(updateBatch)
更新多条数据,每条数据都不一样 背景描述:通常如果需要一次更新多条数据有两个方式,(1)在业务代码中循环遍历逐条更新.(2)一次性更新所有数据(更准确的说是一条sql语句来更新所有数据,逐条更新的操作 ...
- datagrid如何获取一行数据中的某个字段值_或许是全网最全面关于数据库面试题...
原文: https://www.enmotech.com/web/detail/1/794/1.html 两万字全面论述数据库面试题(上) https://www.enmotech.com/web/d ...
- mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程
MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...
- datagrid如何获取一行数据中的某个字段值_使用Mysql 数据库 新手常见问题
松勤软件测试 坚持教育初心 既问收获也问耕耘 平时用惯了 SQL Server 和 Oracle,基本语法已定型,导致在Mysql数据库操作时经常会报错 1.mysql 中如果字段是字符类型(含中文) ...
- 如何在mysql查询结果集中得到记录行号_MySQL中在查询结果集中得到记录行号的方法...
如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数. Oracle 中可以使用标准 ...
最新文章
- 2016.04.09 使用Powerdesigner进行创建数据库的概念模型并转为物理模型
- xml语法规则(一)
- Mysql 优化器内部JOIN算法hash join On-Disk Hash Join Grace Hash Join Hybrid hash join过程详解
- kafka的key为null时如何存储
- How is S4 Material extened controller loaded
- Linux export 命令设置环境目录
- 【福利派送】准备了八份小礼物,祝你七夕快乐!
- (6)ASP.NET Core 中使用IHttpClientFactory发出HTTP请求
- BZOJ 1977/洛谷P4180 - 次小生成树 Tree(严格次小生成树)
- 消灭星星android,消灭星星安卓版
- Power BI中的透视列和逆透视
- MetersPhere参数赋值时间戳+对接口参数进行加密---form-data格式请求
- 怎样远程控制别人的电脑
- “黄金薄膜” CPI膜 —— 折叠屏手机核心材料
- wxFormBuilder摸索--小白上手--做一个编辑器
- 做CloudXNS产品运营的这半年 – CHINA Testers
- 前端实现设置缓存数据定时失效
- 单片机实现秒表倒数计数器
- mathtype安装以及office2016兼容问题
- Flash的网页MP3录音控件