Sql Server递归查询实例

261人阅读 评论(0) 收藏 举报
分类:

有时需要完成递归查询,即不断对数据库进行查询,后一个查询条件需要使用前一个查询结构来构建。这时就需要使用CTE来完成。


1. 创建测试表:



CREATE TABLE NameList(
	[Id] [int] NOT NULL,
	[ParentId] [int] NOT NULL,
	[Name] [nvarchar](20) NULL
) ON [PRIMARY]






说明:
为演示递归查询,需要创建一个父子表。
id: 主键
parentId : 父id
name: 名称


查询:从根节点(没有父节点)出发,显示出每行的层数。
由于这个查询使用前一个查询结果来构造查询语句,因此需要使用CTE来完成递归查询。
declare @id int
set @id=1;
with CTE as (
select id,name, parentid, 0 as Level
from namelist
where ParentId=@id
UNION ALL
-- Recursive 
select n.id,n.name, n.parentid, Level+1 as Level
from namelist n
join CTE on n.ParentId=cte.id
)
select * from CTE
option(MAXRECURSION 500)




上例的递归层数设为500
1
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1196646次
    • 积分:21548
    • 等级:
    • 排名:第335名
    • 原创:882篇
    • 转载:88篇
    • 译文:4篇
    • 评论:176条
    个人主页
    最新评论