SQL查询无限层级结构的所有下级,所有上级

无限层级结构的table1表,Id(主键),ParentId(父级id)查询某个Id的所有下级或所有上级,使用WITH AS,UNION ALL 查询

1、查询Id为1所有的下级

WITH T
AS(
    SELECT * FROM table1 WHERE Id=1
    UNION ALL
    SELECT a.*  FROM table1 a INNER JOIN T ON a.ParentId=T.Id
)
SELECT * FROM T

2、查询Id为88所有的上级

WITH T
AS(
    SELECT * FROM table1 WHERE Id=88
    UNION ALL
    SELECT a.*
    FROM table1 a INNER JOIN T ON a.Id=T.ParentId
)
SELECT * FROM T

转载于:https://www.cnblogs.com/linJie1930906722/p/9103034.html

原文地址:https://www.cnblogs.com/flms/p/12408619.html

时间: 2024-10-29 06:08:15

SQL查询无限层级结构的所有下级,所有上级的相关文章

【DB2】国标行业分类存储,通过SQL查询出层级关系

新建表 DROP TABLE Industry; CREATE TABLE Industry( IndustryCode VARCHAR(40),IndustryName VARCHAR(100),ParentID VARCHAR(40) ) 点击下载插入语句 数据截图: 现在数据是这个样子的,我们需要找出对应的层级关系,例如: 实现SQL如下: SELECT A.IndustryCode AS CLASS01,A.INDUSTRYNAME CLASS_01NM, B.IndustryCode

sql:查询创建表的结构

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

无限层级且乱序的树形结构数据的整理,利用HashMap减少遍历次数

我们在展示一个机构树的时候,常常会遇到这样的一个问题,查询数据的时候,是从下往上查的,但展示数据的时候,又要从下往上展示. 这时候就要把查询到的数据进行整理从而得到我们想要的结构. 举个例子. ID PARENT_ID SOME_ATTRIBUTE_ID 2001 0   6292 6120 57010 6120 6115   6121 6115   6156 6121 56874 6115 2001   这是根据需求查询出的sql数据,但是它是无序的,所以很让人头疼,不知如何去处理,示意图是这

如何用报表工具实现树状层级结构的填报表

需求说明 对于带有层级结构的数据中,用户为了能够更加清晰直观地查看,往往需要在数据展示时将层级展示出来,比如常见的省.市.县结构,或者一些科目中也会带有层级.通常,我们管这种形式叫做树状报表.在查询统计类报表中可以使用报表的左主格来实现,但是由于填报模型更加侧重于数据处理,格式设计上有别于查询统计报表,往往较难实现树状报表. 下面,我们通过一个层级科目的例子介绍一下在填报表中如何实现这个需求.首先,我们看一下报表展示的结果: 这个报表是一个按照科目录入数据的填报表,科目分不同等级,比如 1001

Php无限层级并显示层级数

今天在处理递归无限层级菜单时,遇到一个稍微烧脑的问题,如何显示当前节点所在的层级数.废话不多说,我们先看个直观的无限层级: <?php // 这里的arr是直接从数据库取出的,仅作为测试数据 $arr = array( array('id' => 1, 'name' => '一级菜单a', 'pid' => 0),// pid 父级id array('id' => 2, 'name' => '一级菜单b', 'pid' => 0), array('id' =>

在数据库中存储层级结构

(摘自:http://qinxuye.me/article/storing-hierachical-data-in-database/) 本文参考自这篇文章.文章是2003年的,但是现在来看仍然有着实际意义. 层级结构,也叫树形结构.在实际应用中,你经常需要保存层级结构到数据库中.比如说:你的网站上的目录.不过,除非使用类XML的数据库,通用的关系数据库很难做到这点. 对于树形数据的存储有很多种方案.主要的方法有两种:邻接表模型,以及修改过的前序遍历算法.本文将会讨论这两种方法的实现.这里的例子

SQL SERVER大话存储结构(5)

阅读目录(Content) 1 基本介绍 2 对数据库启动的影响 3 日志文件添加方式 4 物理结构 5 延迟日志截断原因 6 管理事务日志 本系列上一篇博文链接:SQL SERVER大话存储结构(4)_复合索引与包含索引 回到顶部(go to top) 1 基本介绍 每个数据库都具有事务日志,用于记录所有事物以及每个事物对数据库所作的操作. 日志的记录形式需要根据数据库的恢复模式来确定,数据库恢复模式有三种: 完整模式,完全记录事物日志,需要定期进行日志备份. 大容量日志模式,适用于批量操作的

SQL SERVER大话存储结构(2)

阅读目录(Content) 1 行记录如何存储 1.1 堆表 1.2 聚集索引表格 2 非聚集索引结构 3 非聚集索引键值内容 3.1 堆表上的非聚集索引 3.2 聚集索引表(唯一)的非聚集索引 3.3 聚集索引表(非唯一)的非聚集索引 4 非聚集索引如何查找页 如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持! 本系列上一篇博文链接:SQL SERVER大话存储结构(1)_数据页类型及页面指令分析 回到顶部(go t

SQL SERVER大话存储结构(3)

阅读目录(Content) 1 引入 2 数据行 2.1 数据行结构 2.2 特殊情况(大对象.行溢出及forword) 2.2.1 大对象 2.2.2 行溢出 2.2.3 forword 3 测试存储情况 3.1 堆表分析 3.2 添加主键 3.3 增加一列:可空变长列 3.4 增加一列:非空变长列+默认值 3.4.1 非大对象列 3.5 删除无数据的列 3.6 删除有数据的列 3.7 行溢出 3.8 Forword 4 行结构与DDL 一行数据是如何来存储的呢? 变长列与定长列,NULL与N