下面介绍的SQL语句非常经典,该SQL语句实现子孙树查询,该SQL语句可以直接在查询分析器中执行,供您参考。
--生成表
create table MENU(id int,mname char(50),parent int)
--插入数据
insert into MENU
select 1,'新闻',Null union all
select 2,'房产',Null union all
select 3,'科技新闻',1 union all
select 4,'社会新闻',1 union all
select 5, 'IT新闻',3 union all
select 6, '航天新闻',3
--实现查询新闻子孙树
Declare @s varchar(1000)
select @s=','+cast(id as varchar(20))+'' from MENU where id=1 while @@rowCount>0
--charindex:返回字符串中指定表达式的起始位置
select @s=@s+','+cast(id as varchar) from MENU
where charindex(','+cast(id as varchar)+',',@s+',')=0
and charindex(','+cast(parent as varchar)+',',@s+',')>0
select from MENU where charindex(','+cast(id as varchar)+',',@s+',')>0
--删除表
drop table MENU
你这写法是正确的,至少递归的数据已达到只是显示方式不一样
加个记录字段,并按记录字段排序即可完成以下效果:
--修改如下:WITH rec(warecode,waresupercode,waerName,sort)
as
(
select warecode,waresupercode,waerName,warecode from DIC_WARE dw where dwwaresupercode IS NULL
UNION all
SELECT warecode,waresupercode,waerName,sort+'| '+warecode
from DIC_WARE a ,rec b on awaresupercode=bwarecode
)
SELECT warecode,waresupercode,waerName
FROM rec order by sort
GO
测试数据效果图下:
希望能帮到你!
以上就是关于SQL语句实现子孙树查询经典实例全部的内容,包括:SQL语句实现子孙树查询经典实例、sqlserver2008树查询,急急急,求大神教育、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)