SQL Server 递归查询上下级
表结构如下:
CREATE TABLE [dbo].[sys_org]([id] [nvarchar](50) NOT NULL,[name] [nvarchar](100) NULL,[parentid] [nvarchar](50) NULL,CONSTRAINT [PK_sys_org] PRIMARY KEY CLUSTERED
([id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
表数据:
1.查询所有上级
-- 查询所有上级
;WITH Tree
AS(SELECT * FROM sys_org WHERE id='D02'UNION ALLSELECT tab.* FROM sys_org tab INNER JOIN Tree ON tab.id=Tree.parentid)
SELECT * FROM Tree
2.查询所有下级
-- 查询所有下级
;WITH Tree
AS(SELECT * FROM sys_org WHERE parentid='0'UNION ALLSELECT tab.* FROM sys_org tab inner JOIN Tree ON tab.parentid =Tree.id)
SELECT * FROM Tree
3.查询当前id的层级
-- 查询当前id的层级
;WITH Tree
AS(SELECT * FROM sys_org WHERE id='B01'UNION ALLSELECT tab.* FROM sys_org tab INNER JOIN Tree ON tab.id=Tree.parentid)
SELECT COUNT(*) as level FROM Tree
4.拼接所有上级加当前的id
拼接id,所有的上级id+当前id 例如 id=B01,拼接后的id为:01A01B01
由于查询出来的数据是倒序,id又没有排序规律,因此加了一个空字符串字段“px”
--拼接id,所有的上级id+当前id 例如 id=B01,拼接后的id为:01A01B01
--由于查询出来的数据是倒序,id又没有排序规律,因此加了一个空字符串字段“px”
;WITH Tree
AS(SELECT *,'' px FROM sys_org WHERE id='B01'UNION ALLSELECT tab.* ,'' px FROM sys_org tab INNER JOIN Tree ON tab.id=Tree.parentid)
select (select ''+ id from (SELECT *, ROW_NUMBER() OVER(order by px) as row FROM Tree )bbb order by row desc FOR XML PATH (''))as orgid
SQL Server 递归查询上下级相关推荐
- SQL SERVER 递归查询(4)——递归层级查询
我们在做递归查询的时候,有时候需要查询特定某一级的数据,如果我们的数据上没有标注该数据的层级数,那么我们可以在递归的时候自己加一个,并在读取的时候作为查询条件来用,测试数据: --测试数据 if no ...
- sql server 通过上下级关系字段用递归方法生成上下级层级关联数据字段
一.场景 有一个数据库表里面存储了一个上下级关系的字段,通过存储这个觉得的上级id.如果要查找所有的上级或者下级就要通过循环每个去查找.如下 id p_id name 1 0 老板 2 1 副总 3 ...
- SQL Server递归查询无限级分类
2019独角兽企业重金招聘Python工程师标准>>> WITH cte_parent(OrderOpenId, SharedOpenId, SubjectId) AS (SELEC ...
- sql server递归查询
如下图,查询每个节点之间的关系,以及层级 表中存储的数据如下: 数据类型: 1.查询每个节点之间的关系,以及层级 逻辑: 该表自连接,son_id 与 father_id 相等,一步一步连接下去 WI ...
- SQL Server CTE 递归查询全解
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- [SQL Server] TSQL实现SQL Server中CTE 递归查询
参考博客:https://www.cnblogs.com/ljhdo/p/4580347.html 简介 递归查询主要应用于层级结构表的查询: 叶节点-> 根节点的查询 根节点-> 叶节点 ...
- 【SQL SERVER】递归查询
有示例数据,表名为SYS_Department id departmentName parentId remark isEnable staffId 2 总经理 1 总经理 1 3 账务部 2 账务部 ...
- T-SQL Enhancement in SQL Server 2005[上篇]
较之前一版本,SQL Server 2005可以说是作出了根本性的革新.对于一般的编程人员来说,最具吸引力的一大特性就是实现了对CLR的寄宿,使我们可以使用任意一种.NET Programming L ...
- SQL Server 2008中原生的分层数据类型:hierarchyid
SQL Server 2008中SQL应用系列--目录索引 如果是在SQL 2000中,我们需要读取分层结构数据时,不得不借助递归.在SQL server 2005中,我们可以使用CTE,当然,好的数 ...
最新文章
- 敏捷DoD完成定义的多种形态
- ArcGIS学习记录—KMZ KML与SHP文件互相转换
- oracle关于分区,关于Oracle分区
- 商业智能让营销更精确
- Go语言并发编程简介
- java 抛出异常_我的Java Web之路51 - Java异常基础
- VS2015 C#利用QrCodeNet生成QR Code
- 拓端tecdat|R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
- 智能化施工(综合管线)
- 中兴通讯加入LoRa Alliance董事会 推动中国运营级LoRa产业链发展
- 【Python网络蜘蛛 · 8】:moviepy模块实现音频+视频的合成
- css彩虹·,web前端入门到实战:纯CSS画动态彩虹
- 家用洗地机买什么牌子好一点?家用洗地机推荐
- php基本变量,PHP-语法及变量基本操作
- 初识Continuation
- ACTION_DATE_CHANGED不响应
- Word控件Spire.Doc 【文本】教程(1) ;C#/VB.NET:从 Word 文档中删除文本或图像水印
- 顾问风采 | LF AI Data 基金会完成换届,堵俊平担任董事会主席、星爵担任会员总代表...
- 有限状态机FSM详解(5)——层次状态机HSM
- C/C++、OS、网络面经