- 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
来源: http://www.bubuko.com/infodetail-3078158.html