sql server 递归查询

Create Table #ss( F1 int , F2 int , F3 char( 20 ) )
Declare @ss int , @ss1 int
set @ss = 1
insert #ss( F2 , F3 ) Values( @ss , '教育局' )
insert #ss( F1 , F2 , F3 ) Values( @ss , 2 , '市一高' )

set @ss1 = 3
insert #ss( F1 , F2 , F3 ) Values( @ss , @ss1 , '开发区' )
insert #ss( F1 , F2 , F3 ) Values( @ss1 , 4 , '开发区1' )
set @ss1 = 5
insert #ss( F1 , F2 , F3 ) Values( @ss , @ss1 , '××区' )
insert #ss( F1 , F2 , F3 ) Values( @ss1 , 6 , '××区一小' )
insert #ss( F1 , F2 , F3 ) Values( @ss1 , 7 , '××区一中' )
insert #ss( F1 , F2 , F3 ) Values( @ss1 , 8 , '××区二小' )
set @ss1 = 9
insert #ss( F1 , F2 , F3 ) Values( @ss , @ss1 , '××县' )
insert #ss( F1 , F2 , F3 ) Values( @ss1 , 10 , '××镇' )
set @ss = 11
insert #ss( F1 , F2 , F3 ) Values( @ss1 , @ss , '××乡' )
insert #ss( F1 , F2 , F3 ) Values( @ss , 12 , '××乡一小' )
insert #ss( F1 , F2 , F3 ) Values( @ss , 13 , '××乡二小' )


--需要查询某一个单位的所有子单位
--比如查询“××县”,要查到××镇、××乡、××乡一小、××乡二小
declare @cx int
set @cx=1
if 1=1
with a as(
select * from #ss where f2=@cx
union all
select b.* from #ss b join a on b.f1=a.f2)
select * from a

 

 

 

posted @ 2019-05-31 17:34  ZHOUZC  阅读(239)  评论(0编辑  收藏  举报