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

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

一.需求

确定给定行属于哪些类型的节点: 叶节点、分支节点及根节点。

对于这个例子,叶节点表示该员工不是经理;分支节点上的员工即是经理,又有经理根节点是没有经理的员工。
通过返回1(TRUE)或0(FALSE),

二.解决方案

请注意,EMP表是树状层次模型,而不是递归层次模型,根节点的mgr值为null。
如果emp是递归层次模型的话,根节点应有自引用(即员工KING的mgr值将是KING的empno)。
实际上,自引用并不直观,故这里将根节点的mgr设为null值。
对于递归层次模型中使用 connect by(Oracle)或with的情况,请务必当心:SQL可能会死循环,如果一定要采用递归层次,代码中必须考虑避免这样的循环。

select  e.ename,(select sign(count(*)) from emp dwhere 0 =(select count(*) from emp fwhere f.mgr = e.empno)) as is_leaf,(select sign(count(*)) from emp dwhere d.mgr = e.empnoand e.mgr is not null) as is_branch,(select sign(count(*)) from emp dwhere d.empno = e.empnoand d.mgr is null) as is_rootfrom  emp eorder  by 4 desc,3 desc;

测试记录:

mysql> select  e.ename,->         (select sign(count(*)) from emp d->           where 0 =->             (select count(*) from emp f->               where f.mgr = e.empno)) as is_leaf,->         (select sign(count(*)) from emp d->           where d.mgr = e.empno->             and e.mgr is not null) as is_branch,->         (select sign(count(*)) from emp d->           where d.empno = e.empno->             and d.mgr is null) as is_root->   from  emp e->  order  by 4 desc,3 desc;
+--------+---------+-----------+---------+
| ename  | is_leaf | is_branch | is_root |
+--------+---------+-----------+---------+
| KING   |       0 |         0 |       1 |
| JONES  |       0 |         1 |       0 |
| BLAKE  |       0 |         1 |       0 |
| CLARK  |       0 |         1 |       0 |
| SCOTT  |       0 |         1 |       0 |
| FORD   |       0 |         1 |       0 |
| SMITH  |       1 |         0 |       0 |
| ALLEN  |       1 |         0 |       0 |
| WARD   |       1 |         0 |       0 |
| MARTIN |       1 |         0 |       0 |
| TURNER |       1 |         0 |       0 |
| ADAMS  |       1 |         0 |       0 |
| JAMES  |       1 |         0 |       0 |
| MILLER |       1 |         0 |       0 |
+--------+---------+-----------+---------+
14 rows in set (0.00 sec)

MySQL 确定哪些是叶节点、分子节点、根节点相关推荐

  1. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 创建 XmlNode 节点 | 管理 XmlNode 节点并将根节点转为 Xml 信息 | 完整代码示例 )

    文章目录 一.创建 XmlNode 节点 二.管理 XmlNode 节点并将根节点转为 Xml 信息 三.完整代码示例 1.自定义 Xml 生成器 MyBuilderSupport 2.Xml 节点封 ...

  2. Xml解析-根节点是集合根节点

    Xml解析-根节点是集合根节点,解析集合如下 <?xml version="1.0" encoding="utf-8" ?> <CityLis ...

  3. mysql 获取根节点_mysql递归查询根节点

    同时查询2张表, 查询学生所在的班级 mysql> select xing_ming,ban_ming from xue_sheng,ban_ji; 别名的使用 mysql> select ...

  4. SQL-将具有上下级关系的表,转换成树形图,并标识各节点的类型(根节点、分支节点、叶子节点)

    需求:将具有上下级关系的表,转换为树形图,并标识各节点的类型(根节点.分支节点.叶子节点) 分析与解答: 根据伪列level和connect_by_isleaf的值进行判断即可 select leve ...

  5. java根节点到叶子节点_二叉树根节点到叶子节点的所有路径和

    我觉得这个题目和剑指offer中的一道题目非常相似.先说这个题: 解题思路:从根结点开始,当每访问到一个结点,我们把该结点添加到路径上,并"累加" 该结点的值,这里"累加 ...

  6. avl删除根节点图解_图解 6 种树,你心中有数吗。。。

    数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习数据结构时候,会遇到各种各样的基础数据结构,比如堆栈.队列.数组.链表.树...这些基本的数据结构类 ...

  7. HDU - 1890 Robotic Sort(Splay-区间翻转+删除根节点)

    题目链接:点击查看 题目大意:给出一个序列,初始时是乱序的,要求根据规则排序,规则是,遍历每一个点 i ,使得区间 [ i , a[ i ] ] 内的数翻转,a[ i ] 表示的是数列中第 i 大的数 ...

  8. 数据结构-树:根节点、子节点、叶子节点是什么?

    前言:这个属于数据结构:树. 下面给个例子图解释(根节点.子节点.叶子节点). 上图数字 1.3.7是叶子节点:(因为他们下面没有分叉出子节点,所以称为:叶子节点)[度为0] 数字2.8是子节点: ( ...

  9. POJ 1236 Network of Schools(强连通分量缩点求根节点和叶子节点的个数)

    Description: A number of schools are connected to a computer network. Agreements have been developed ...

  10. cms 移动根节点到根节点中的子节点,根节点消失解决办法

    cms 移动根节点到根节点中的子节点,根节点消失解决办法 cms使用对应有个NetCMS数据库,找到其中NT_News_Class表,这个表就是保存栏目名称的表 select * from dbo.N ...

最新文章

  1. 构建 RESTful Web 服务
  2. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)(二)
  3. 解题:USACO14OPEN Fair Photography
  4. Java GUI 基础知识
  5. Nokia 920全部CODE
  6. 软/硬件负载均衡产品 你知多少?
  7. linux 查看指定目录的所有文件大小
  8. 20160205 - Windows 10 家庭版没有组策略
  9. ELAS_ROS算法在KITTI数据集上生成稠密点云
  10. 查看电脑CPU是否支持虚拟化
  11. pageHelper.startPage(m,n)的用法
  12. the7主题footer.php,【Drupal7主题】Repro 清爽杂志门户Drupal 主题
  13. Unity Shader Dither
  14. kail linux配置无线网络,Kali Linux 无线渗透测试入门指南 第一章 配置无线环境
  15. Spring retry重试框架
  16. spm + host
  17. 名额有限| 和喜马拉雅、网易严选、大搜车...学运营,是超级用户运营!
  18. 使用TIM捕获测量PWM频率和占空比
  19. excel表格行列显示十字定位_突出显示活动单元格所在行列的设置方法
  20. 华云数据出席2021信创发展论坛:喜获信创双项殊荣 发布业内首个《信创云基座白皮书》

热门文章

  1. 《弃子长安》第八章 昨日黄花
  2. 阿piu传-文档批量上传客户端-原创力版使用帮助
  3. 没有表情包都不好意思说自己是年轻人——python一键保存几千张表情包图片
  4. android高仿京东秒杀,Android通过实现GridView的横向滚动实现仿京东秒杀效果
  5. call()与appy()
  6. BZOJ3693:圆桌会议(Hall定理)
  7. TensorFlow已死,TensorFlow万岁!
  8. java 大数据处理之内存溢出解决办法
  9. c#中用声音提示报警 .
  10. B-树叶子个数和关键字个数间关系推导