sql 递归查询所有的下级
Posted 左正
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 递归查询所有的下级相关的知识,希望对你有一定的参考价值。
--> 生成测试数据表: [tb]
IF OBJECT_ID(
‘[Users]‘
)
IS
NOT
NULL
DROP
TABLE
[Users]
GO
CREATE
TABLE
[Users] ([userid] [
int
],[username] [nvarchar](10),[parentUserId] [
int
],[parentUserName] [nvarchar](10))
INSERT
INTO
[Users]
SELECT
‘1‘
,
‘admin‘
,
‘0‘
,
NULL
UNION
ALL
SELECT
‘2‘
,
‘aaaaa‘
,
‘1‘
,
‘admin‘
UNION
ALL
SELECT
‘3‘
,
‘bbbbb‘
,
‘2‘
,
‘aaaaa‘
UNION
ALL
SELECT
‘4‘
,
‘ddddd‘
,
‘3‘
,
‘bbbbb‘
-->SQL查询如下:
;
with
t
as
(
select
*,
level
=1
from
Users
where
[parentUserId]=0
union
all
select
a.*,
level
+1
from
Users a
join
t b
on
a.parentUserId=b.userid
)
select
*
from
t
where
[parentUserId]<>0
/*
userid username parentUserId parentUserName level
----------- ---------- ------------ -------------- -----------
2 aaaaa 1 admin 2
3 bbbbb 2 aaaaa 3
4 ddddd 3 bbbbb 4
(3 行受影响)
*/
以上是关于sql 递归查询所有的下级的主要内容,如果未能解决你的问题,请参考以下文章