樹形資料廣度排序處理示例 sql

2022-09-01 14:51:10 字數 1137 閱讀 2141

--測試資料

declare @t table(id char(3),pid char(3),name nvarchar(10))

insert @t select '001',null ,'山東省'

union all select '002','001','煙台市'

union all select '004','002','招遠市'

union all select '003','001','青島市'

union all select '005',null ,'四會市'

union all select '006','005','清遠市'

union all select '007','006','小分市'

--廣度排序顯示處理

--生成每個節點的層次資料

declare @t_level table(id char(3),level int)

declare @level int

set @level=0

insert @t_level select id,@level

from @t

where pid is null

while @@rowcount>0

begin

set @level=@level+1

insert @t_level select a.id,@level

from @t a,@t_level b

where a.pid=b.id

and b.level=@level-1

end--顯示結果

select a.*

from @t a,@t_level b

where a.id=b.id

order by b.level,b.id

/*--結果

id   pid  name      

------- --------- ----------

001  null 山東省

005  null 四會市

002  001   煙台市

003  001   青島市

006  005   清遠市

004  002   招遠市

007  006   小分市

--*/

樹形資料深度排序處理示例 遞迴法 sql

測試資料 create table tb id char 3 pid char 3 name nvarchar 10 insert tb select 001 null 山東省 union all select 002 001 煙台市 union all select 004 002 招遠市 uni...

樹形資料查詢示例

參考 樹形資料查詢示例 示例資料 create table tb id int identity 1,1 pid int,name varchar 20 insert tb select 0,中國 union all select 0,美國 union all select 0,加拿大 union ...

樹形資料深度排序處理示例 模擬單編號法 sql

測試資料 declare t table id char 3 pid char 3 name nvarchar 10 insert t select 001 null 山東省 union all select 002 001 煙台市 union all select 004 002 招遠市 unio...