力扣 SQL 608. 树节点
2023-09-14 09:06:14 时间
题目 :https://leetcode.cn/problems/tree-node/
数据
Create table If Not Exists Tree (id int, p_id int)
insert into Tree (id, p_id) values ('1', 'None')
insert into Tree (id, p_id) values ('2', '1')
insert into Tree (id, p_id) values ('3', '1')
insert into Tree (id, p_id) values ('4', '2')
insert into Tree (id, p_id) values ('5', '2')
需求
查询所有节点的编号和节点的类型,并将结果按照节点编号排序
- 叶子:如果这个节点没有任何孩子节点
- 根:如果这个节点是整棵树的根,即没有父节点
- 内部节点:如果这个节点既不是叶子节点也不是根节点
查询结果 :
| id | type |
| 1 | Root |
| 2 | Inner|
| 3 | Leaf |
| 4 | Leaf |
| 5 | Leaf |
解决
-- 根 : p_id 为空
select id,
'Root' as type
from tree
where p_id is null
union all
-- 内部节点 : 父节点有该节点
select t1.id,
'Inner' as type
from tree t1 join tree t2
on t1.id = t2.p_id
where t1.p_id is not null
group by t1.id
union all
-- 叶子 : 父节点没有该节点
select t3.id,
'Leaf' as type
from tree t3 left join tree t4
on t3.id = t4.p_id
where t4.id is null
and t3.p_id is not null
group by t3.id
相关文章
- MongoDB节点如何快速克隆?
- Kubernetes 二进制部署(二)集群部署(多 Master 节点通过 Nginx 负载均衡)
- 【Android APT】注解处理器 ( Element 注解节点相关操作 )
- 【Unity3D】3D 物体概念 ① ( 轴心点概念 | 物体的父子关系 | 子节点相对坐标 )
- SQL开发知识:一个简单的sql注入
- Hadoop故障处理全分布下,DataNode进程正常启动,但是网页上不显示,并且DataNode节点为空详解大数据
- 探索Oracle RAC:连接不同节点的关键(连接oraclerac)
- SQL与Oracle:比较与实现(sql与oracle)
- 如何在MySQL中运行SQL脚本:简单提示与步骤(mysql运行sql脚本)
- 和 sql server支持两者:Oracle 和 SQL Server的兼容性(兼容oracle)
- MySQL中实现递归查询父节点的技巧(mysql递归查询父节点)
- 深入理解Linux系统节点,提升系统管理效率(linux系统节点)
- SQL Server保护有效节点,碰撞中断的价值(sqlserver中断值)
- Oracle SQL跟踪工具:优化SQL查询的得力助手(oracle跟踪sql工具)
- 掌握Oracle中的SQL语句奥妙(oracle中sql语句)
- MySQL的PL/SQL:把数据库中的业务流程变得更简单!(mysql的pl sql)
- 语句MS SQL:每条SQL语句都有其特殊意义(mssql 每条sql)
- 用Oracle掌握常用SQL语句(oracle常用sql语句)
- MySQL中SQL语句实现求差(mysql中sql求差)
- Oracle数据库深入学习SQL标签的用法(oracle中sql标签)
- Oracle SQL代码审查引发的期待与担忧(oracle sql评审)
- Oracle SQL分区利用它提高数据库性能(oracle sql分区)
- 红色卓越解读Redis节点的特点(redis节点的特点)
- jsTree基于JQuery的排序节点Bug
- SQLServer中用T—SQL命令查询一个数据库中有哪些表的sql语句
- t-sql/mssql用命令行导入数据脚本的SQL语句示例
- DevExpress设置TreeList图片节点背景色的方法