sql id,name,pid(1,a,0) 下面有如下数据:2,b,1 3,c,1 4,d,1 5,e,2 6,f,5
3个回答

使用公共表表达式的递归查询,递归获取Admin_Department中的数据,明显是要按照部门(Department)的上下级来取所有部门.

执行的过程应该是这样子的(pid是上级部门的id吧,parent id的意思):

先取出pid=1的数据,就是部门a下的所有第一级部门,也就是2,b,1 3,c,1 4,d,1

然后再递归取部门b,c,d下面的部门,依次是5,e,2 6,f,5 7,g,...

依次往下取出部门a下的所有部门.

全部取出来后是这样子:

id name pid

2x05bx051

3x05cx051

4x05dx051

5x05ex051

6x05fx051

7x05gx051

因为都是1,a,0下的所有部门,所以它们的pid都是为1的.

如果还不清楚的话就看看CTE(公共表表达式)的资料,比较有用的技巧,建议掌握.