sqlserver分类排序,将父子节点的放在一起.docx

上传人:牧羊曲112 文档编号:3166196 上传时间:2023-03-11 格式:DOCX 页数:3 大小:36.87KB
返回 下载 相关 举报
sqlserver分类排序,将父子节点的放在一起.docx_第1页
第1页 / 共3页
sqlserver分类排序,将父子节点的放在一起.docx_第2页
第2页 / 共3页
sqlserver分类排序,将父子节点的放在一起.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《sqlserver分类排序,将父子节点的放在一起.docx》由会员分享,可在线阅读,更多相关《sqlserver分类排序,将父子节点的放在一起.docx(3页珍藏版)》请在三一办公上搜索。

1、sqlserver分类排序,将父子节点的放在一起Sqlserver父子节点查询 与 分类排序 已知题目: 表测试数据如下: create table C(Id int ,Name varchar(20),Parent_id int) insert into C values(1,w,null) insert into C values(3,d,null) insert into C values(5,d,1) insert into C values(6,f,3) insert into C values(7,f,1) insert into C values(8,g,null) insert

2、 into C values(9,g,null) insert into C values(10,gd,6) insert into C values(13,gx,7) 方法一: -网络上某人的方法 select * from (select ID,Name,Parent_id,(case when idParent_id then Parent_id else id end) flag from C) t order by flag,id 方法二: 思路:将所有根节点提出 然后 获得根节点下的所有子节点,遍历根节点的记录。使用union all 连接即可: 首先创建函数GetSubNode_

3、C(parentid int): create function GetSubNode_C(parentid int) returns t table(Id int ,Name varchar(20),Parent_id int,Level int) As Begin declare Level int -等级 根节点等级为1 set Level=1 insert into t select Id,Name,Parent_id,Level from C where Id=parentid while rowcount0 -如果至少有一条子节点 begin set Level=Level+1 i

4、nsert into t select a.Id,a.Name,a.Parent_id,Level from C a,t b where a.Parent_id in (select Id from C where Id=b.ID) and b.Level=Level-1 end return End 然后游标遍历所有根节点(parentid is null)的记录,拼装sql语句,最后执行 declare sql varchar(8000) set sql= declare Id int declare cur cursor for select id from C where parent

5、_id is null open cur fetch next from cur into Id while fetch_status=0 begin if len(sql)=0 set sql=sql+select * from dbo.GetSubNode_C(+cast(Id as varchar(10)+) else set sql=sql+ union all select * from dbo.GetSubNode_C(+cast(Id as varchar(10)+) fetch next from cur into Id end close cur deallocate cur exec(sql) 运行结果截图:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号