SQL 树递归查询

--树递归查询,根遍历子(由外到里递归)
WITH MenuTree --
AS
(
SELECT * FROM dbo.HR_SYS_Menu WHERE UpCode = 5
UNION ALL
SELECT dbo.HR_SYS_Menu.* FROM MenuTree
JOIN dbo.HR_SYS_Menu ON MenuTree.ID = dbo.HR_SYS_Menu.UpCode
)
SELECT * FROM MenuTree
GO
--树递归查询,根遍历子(由外到里递归)
WITH MenuTree --
AS
(
SELECT * FROM dbo.HR_SYS_Menu WHERE ID = 521
UNION ALL
SELECT dbo.HR_SYS_Menu.* FROM MenuTree
JOIN dbo.HR_SYS_Menu ON MenuTree.UpCode = dbo.HR_SYS_Menu.ID
)
SELECT * FROM MenuTree
GO

--树递归查询,子遍历根(由里到外递归)
WITH MenuTree
AS
(
SELECT A.ID,A.UpCode,A.Name FROM dbo.HR_SYS_Menu A WHERE ID = 521
UNION ALL
SELECT dbo.HR_SYS_Menu.ID,dbo.HR_SYS_Menu.UpCode,dbo.HR_SYS_Menu.Name FROM MenuTree B
JOIN dbo.HR_SYS_Menu ON B.UpCode = dbo.HR_SYS_Menu.ID
)
SELECT * FROM MenuTree
GO
--树递归查询,根遍历子(由外到里递归)
WITH MenuTree
AS
(
SELECT A.ID,A.UpCode,A.Name FROM dbo.HR_SYS_Menu A WHERE A.UpCode = 5
UNION ALL
SELECT dbo.HR_SYS_Menu.ID,dbo.HR_SYS_Menu.UpCode,dbo.HR_SYS_Menu.Name FROM MenuTree B
JOIN dbo.HR_SYS_Menu ON B.ID = dbo.HR_SYS_Menu.UpCode
)
SELECT * FROM MenuTree
GO

时间: 2024-10-18 10:02:48

SQL 树递归查询的相关文章

SQL CTE树递归查询

--树递归查询,根遍历子(由外到里递归)WITH MenuTree AS( SELECT * FROM dbo.HR_SYS_Menu WHERE UpCode = 5 UNION ALL SELECT dbo.HR_SYS_Menu.* FROM MenuTree JOIN dbo.HR_SYS_Menu ON MenuTree.ID = dbo.HR_SYS_Menu.UpCode)SELECT * FROM MenuTreeGO --树递归查询,子遍历根(由里到外递归)WITH MenuT

MS SQL Server递归查询

刚才在论坛上看到网友一个要求.参考如下,Insus.NET分析一下,可以使用MS SQL Server的递归查询,得到结果. 准备一张表: 根据网友提供的数据,填充此表: 下面语法在SQL Server 2014之下运行正常: 上面代码示例中,完整SQL代码: WITH TempDeptment ([ID],[PID],[DeptName],[Conjunction]) AS ( SELECT [ID],[PID],[DeptName], CAST([DeptName] AS Nvarchar(

sql语句递归查询(start with)

在做项目中遇到一个问题,就是同一个表中的数据存在级联关系,但是只要查出来的末级数据,纠结了好久,好不容易找到了一个博主的分享,在这里做个记录,也是和大家一起分享学习一下这位大神的技术,共勉 写代码时碰到要弄清楚Oracle的role之间的传递关系,就是有role A的话,可以通过grant A to B,把A赋予给B,又通过grant B to C .那我想知道所有role中,有哪些role具有A的权限. 上网一查发现有个递归查询,不过都讲的不是太详细,而那Oracle整的那用法实在太怪异了,跟

Sql Server递归查询(转)

有如下数据表 假如我们要查询ID为003的数据的所有子节点我们可以使用CTE 递归查询完成... [sql] view plaincopyprint? if OBJECT_ID('tb','N') is not null drop table tb; create table tb(id varchar(3) , pid varchar(3) , name varchar(10)); insert into tb values('001' , null , '广东省'); insert into

【Sql Server】SQL SERVER 递归查询

SQL SERVER 2005之前的版本只能用函数方法实现,SQL SERVER 2005之后新增了CTE功能,可以利用CTE实现递归查询: CTE:公用表达式Common Table Expression 是SQL SERVER 2005版本之后引入的一个特性: #填充测试数据 1.sql 1 Create table GroupInfo1([Id] int,[GroupName] nvarchar(50),[ParentGroupId] int) 2 3 Insert GroupInfo1

oracle sql 树操作

语法:select-start with-connect by-prior 主要有两点 1)prior放在子节点端,则表示扫描树是以start with指定的节点作为根节点从上往下扫描.可能对应一个或多个分支. start with可以省略,如果省略,表示对所有节点都当成根节点分别进行遍历 select DEPTID,DEPTNAME,DEPT_PID,DEPT_PNAME ,LEADER,REMARK,DEPTDESC,SORTSNO,STATUS,LEVELID from T_SYS_DEP

sql 树状查询

;with cte as ( select * from tb where [email protected] union all select a.* from tb a join cte b on a.id=b.pid ) select * from cte http://bbs.csdn.net/topics/380180222 公用表表达式(Common Table Expression)是SQL SERVER 2005版本之后引入的一个特性.CTE可以看作是一个临时的结果集,可以在接下

SQl树查询

一.SqlServer树查询 很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例. --通过子节点查询父节点 With Tree As( Select * From table Where id = 6 -- 要查询的子 id Union All Select table.* From table, Tree Where Tree.parent = table.id ) Select * From Tree;

SQL 语句递归查询 With AS 查找所有子节点

create table #EnterPrise(  Department nvarchar(50),--部门名称  ParentDept nvarchar(50),--上级部门  DepartManage nvarchar(30)--部门经理) insert into #EnterPrise select '技术部','总经办','Tom'insert into #EnterPrise select '商务部','总经办','Jeffry'insert into #EnterPrise sel