-- with 一个临时表(括号里包括的是你要查询的列名) with tem_table(dept_id,parent_id,dep_name,curlevel) as ( --1,初始查询(这里的parent_id='000'是我门数据中最底层的根节点) select dept_id, parent_dept_id, dept_name, 1 as level from dbo.T_DeptInfo where parent_dept_id = '000' union all --2,递归条件 select a.dept_id, a.parent_dept_id, a.dept_name, b.curlevel+1 from dbo.T_DeptInfo a inner join tem_table b on (a.parent_dept_id = b.dept_id) ) select * from tem_table; --3,递归完成后,一定不能少了这句查询语句,否则会报错