ID1 ID2
6666 5555
7777 6666
8888 7777
9999 8888
1111 9999
2222 1111
3333 2222 说明
3333 的上级是2222
2222 的上级是1111
依次类推写出语句 查询出7777下级所有记录 结果如下8888 7777
9999 8888
1111 9999
2222 1111
3333 2222
不要使用 WITH AS 语句
6666 5555
7777 6666
8888 7777
9999 8888
1111 9999
2222 1111
3333 2222 说明
3333 的上级是2222
2222 的上级是1111
依次类推写出语句 查询出7777下级所有记录 结果如下8888 7777
9999 8888
1111 9999
2222 1111
3333 2222
不要使用 WITH AS 语句
CREATE FUNCTION [dbo].[f_Cid](@ID INT)
RETURNS @t_Level TABLE(ID INT,Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID1,@Level
FROM tb a,@t_Level b
WHERE a.ID2=b.ID
AND b.Level=@Level-1
END
RETURN
END
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([ID1] int,[ID2] int)
insert [tb]
select 6666,5555 union all
select 7777,6666 union all
select 8888,7777 union all
select 9999,8888 union all
select 1111,9999 union all
select 2222,1111 union all
select 3333,2222
goSELECT a.*
FROM tb a,f_Cid(7777) b
WHERE a.ID2=b.ID/**
ID1 ID2
----------- -----------
8888 7777
9999 8888
1111 9999
2222 1111
3333 2222(5 行受影响)
**/