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