Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SQL练习笔记五:树节点

SQL练习笔记五:树节点

作者头像
用户6184845
发布于 2021-01-04 03:31:36
发布于 2021-01-04 03:31:36
38800
代码可运行
举报
运行总次数:0
代码可运行

每个节点都是以下三种类型中的一种:

  • Root: 如果节点是根节点。
  • Leaf: 如果节点是叶子节点。
  • Inner: 如果节点既不是根节点也不是叶子节点。

对于tree表,id是树节点的标识,p_id是其父节点的id。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE tree(
  id int(4) not null,
  p_id int(4)
);

insert INTO tree (id) VALUES(1);
insert INTO tree VALUES(2,1);
insert INTO tree VALUES(3,1);
insert INTO tree VALUES(4,2);
insert INTO tree VALUES(5,2);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 根节点查询 --
SELECT
  id,
  @Type := 'Root' AS Type 
FROM
  tree 
WHERE
  p_id IS NULL;

-- 内部节点查询 --
SELECT
  id,
  @Type := 'Inner' AS Type 
FROM
  tree 
WHERE
  id IN ( SELECT DISTINCT p_id FROM tree WHERE p_id IS NOT NULL ) 
  AND p_id IN ( SELECT DISTINCT id FROM tree WHERE id IS NOT NULL );

-- 叶子节点查询 --
SELECT
  id,
  @Type := 'Leaf' AS Type
FROM
  tree
WHERE
  id not in(SELECT DISTINCT p_id FROM tree WHERE p_id is not null);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 解法:case条件分支判断解决
SELECT
  id,
  (
  CASE
      WHEN p_id IS NULL THEN 'Root' 
      WHEN id NOT IN ( SELECT DISTINCT p_id FROM tree WHERE p_id IS NOT NULL ) THEN  'Leaf'
      ELSE 'Inner' 
    END 
  ) AS Type 
FROM
  tree;

网优苦短,我用Python

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网优小兵玩Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
「SQL面试题库」 No_36 树节点
「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。
不吃西红柿
2023/04/21
2200
​LeetCode刷题实战608:树节点
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
程序员小猿
2022/06/07
2040
​LeetCode刷题实战608:树节点
文心一言 VS 讯飞星火 VS chatgpt (153)-- 算法导论12.2 9题
要证明这个性质,我们可以采用二叉搜索树的性质:对于任何节点N,其左子树中的所有节点的值都小于N的值,而其右子树中的所有节点的值都大于N的值。
福大大架构师每日一题
2023/12/13
1290
文心一言 VS 讯飞星火 VS chatgpt (153)-- 算法导论12.2 9题
文心一言 VS 讯飞星火 VS chatgpt (125)-- 算法导论10.6 6题
在有根树中,我们通常需要用三个指针来定位一个节点的左孩子、右兄弟和父节点。如果我们想减少一个指针,我们可以利用数据结构设计来达到这个目标。具体来说,我们可以在每个节点中使用一个布尔值标记其左右孩子节点的存在,然后在需要的时候进行递归查找。
福大大架构师每日一题
2023/11/01
1750
文心一言 VS 讯飞星火 VS chatgpt (125)-- 算法导论10.6 6题
树(8)
B-Tree树即B树,B即Balanced,平衡的意思。有人把B-Tree翻译成B-树,容易让人产生误解。会以为B-树是一种树,而B树又是另一种树。实际上,B-Tree就是指的B树。
JusterZhu
2022/12/07
2330
树(8)
LeetCode MySQL 608. 树节点
写一个查询语句,输出所有节点的编号和节点的类型, 并将结果按照节点编号排序。上面样例的结果为:
Michael阿明
2021/02/19
3760
SQL 二叉树节点
这是一道在 HackerRank 上的 SQL 竞赛题,题目叫做“Binary Tree Nodes”,它的难度等级属于中级。
白日梦想家
2020/07/31
9720
SQL 二叉树节点
Leetcode 608. 树节点(case when)
select id, case when p_id is null then 'Root' when id in (select p_id from tree) then 'Inner' else 'Leaf' end type from tree
glm233
2021/04/28
3860
Leetcode 608. 树节点(case when)
SQL刷题
SQL是程序员工作中不可缺少的拉取数据的工具,本教程按天进行更新,分10天完成,共刷题100道,彻底熟悉sql的相关语法和使用。
用户2794661
2022/05/16
6680
文心一言 VS 讯飞星火 VS chatgpt (252)-- 算法导论18.2 5题
当我们在B树(或B+树)中考虑不同大小的内部结点和叶结点时,我们可以为每个类型的结点选择不同的t值。内部结点可以有一个较小的t值(例如t_internal),因为它们需要额外的空间来存储指向子结点的指针。而叶结点因为不需要存储子指针,所以可以有一个较大的t值(例如t_leaf),从而存储更多的键值对。
福大大架构师每日一题
2024/05/17
1290
文心一言 VS 讯飞星火 VS chatgpt (252)-- 算法导论18.2 5题
SQL练习笔记四:连续出现的数字
问题:编写一个 SQL 查询,查找所有至少连续出现三次的数字。 CREATE TABLE Log( Id int(4) not null, num int(4) not null ); INSERT INTO Log VALUES(1,1); INSERT INTO Log VALUES(2,1); INSERT INTO Log VALUES(3,1); INSERT INTO Log VALUES(4,2); INSERT INTO Log VALUES(5,1); INSERT INTO
用户6184845
2021/01/04
9340
SQL练习笔记四:连续出现的数字
PAT 1004 Counting Leaves (30分) BFS找每一层非叶子节点数
A family hierarchy is usually presented by a pedigree tree. Your job is to count those family members who have no child.
vivi
2020/07/14
3910
文心一言 VS 讯飞星火 VS chatgpt (256)-- 算法导论18.3 2题
首先,我会提供 B-Tree 删除操作的伪代码,然后我会给出使用 Go 语言实现的简化版本。请注意,一个完整的 B-Tree 实现会涉及很多细节和边界情况,这里只是展示一个基本的框架。
福大大架构师每日一题
2024/05/17
1310
文心一言 VS 讯飞星火 VS chatgpt (256)-- 算法导论18.3 2题
文心一言 VS 讯飞星火 VS chatgpt (250)-- 算法导论18.2 3题
在B树(也称为B-tree)中,最小的关键字总是位于最左边的叶子节点的最左边的元素。要找到最小关键字,你需要从根节点开始,并沿着最左边的孩子节点一直向下搜索,直到达到一个叶子节点。
福大大架构师每日一题
2024/05/18
1340
文心一言 VS 讯飞星火 VS chatgpt (250)-- 算法导论18.2 3题
文心一言 VS 讯飞星火 VS chatgpt (243)-- 算法导论18.1 1题
在B树中不允许最小度数 t=1 的主要原因在于这样会导致树的结构退化为链表,失去了B树作为平衡多路搜索树的优势。当 t=1 时,每个非根节点将只能包含最多一个关键字和两个子节点,这使得B树不再能够有效地利用空间,并且在搜索、插入和删除操作上性能会大大降低。
福大大架构师每日一题
2024/04/25
1480
文心一言 VS 讯飞星火 VS chatgpt (243)-- 算法导论18.1 1题
mysql 8.0中 树形数据的查询
mysql5.7中树形数据的查询 文章目录 数据准备 自顶向下查询子树 自底向上查找所有节点 根据子节点id向上查找 WITH recursive 表名 AS ( 初始语句(非递归部分) UNION ALL 递归部分语句 ) [ SELECT| INSERT | UPDATE | DELETE] 数据准备 -- ---------------------------- -- Table structure for tree -- ---------------------------- DROP
鱼找水需要时间
2023/02/16
2.7K0
mysql 8.0中 树形数据的查询
实现一个简单的Database10(译文)
译注:cstack在github维护了一个简单的、类似sqlite的数据库实现,通过这个简单的项目,可以很好的理解数据库是如何运行的。本文是第十篇,主要是实现B-tree中叶子节点分裂
GreatSQL社区
2023/02/22
1930
在ETL过程中对递归树的历史维护实验
-- 当前递归树 CREATE TABLE TREE_CUR ( C_CHILD VARCHAR2(32 BYTE), C_NAME VARCHAR2(100 BYTE), C_PARENT VARCHAR2(32 BYTE) ); CREATE INDEX IDX1 ON TREE_CUR (C_PARENT); CREATE UNIQUE INDEX TREE_CUR_PK ON TREE_CUR (C_CHILD); ALTER
用户1148526
2019/05/25
5670
LeetCode刷题100道,让你滚瓜烂熟拿下SQL「建议收藏」
对人工智能感兴趣的小伙伴,请多关注以下通俗易懂,风趣幽默的人工智能体系分析 https://www.captainai.net/jeames
全栈程序员站长
2022/11/10
3.3K0
LeetCode刷题100道,让你滚瓜烂熟拿下SQL「建议收藏」
MySQL进阶笔记-01
MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的==示意图==所示 :
千羽
2021/01/14
1.2K0
MySQL进阶笔记-01
推荐阅读
相关推荐
「SQL面试题库」 No_36 树节点
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验