SQL树型排序

来源:互联网 发布:浙江农家乐数据 编辑:程序博客网 时间:2024/06/05 17:18

典型在树形排序:

create table #t(id int,parentid varchar(10))
insert into #t
select  1, 0 union all
select 3 ,0union all
select 4 ,3union all
select 5 ,3union all
select 6 ,1


--查询处理的代码
SELECT *
FROM #t a
   
LEFT JOIN #t b ON a.parentid=b.id
ORDER BY CASE
       
WHEN b.parentid IS NULL THEN a.id
       
WHEN b.parentid=0 THEN b.id
       
ELSE b.parentid END,
   
CASE
       
WHEN b.parentid=0 THEN a.id
       
ELSE a.parentid END,
    a.id

 

 

在此感谢 duanzhi1984 提供示例

 

再次感谢 duanzhi1984 给出以下补充:

--以上就是答案,但以上的查询是有条件的,就是递归的内容不超过三个(父子关系不超过三代)

--若递归多的话,怎么办呢?
--想了个办法就是利用以下语句完成。

with cte(id1,id,parentid)
as
(select cast(row_number() over(order by id) as varchar(10)) id1,*from #t where parentid=0
union all
select  cast(id1+cast(row_number() over(order by a.id)as varchar(10)) as varchar(10)),a.* from #t a join cte  on cte.id=a.parentid )

select  id,parentid from cte  order by id1

 

转载于:


http://blog.csdn.net/duanzhi1984/archive/2010/08/13/5809356.aspx

原创粉丝点击