多叉树是一种经常使用的树状数据结构,它具有每一个节点可以有多个子节点的特点,又被称之为树状图。在SQL Server中,可以通过几种方式来实现多叉树结构,比如可使用非递归游标方法,递归游标方法和递归查询方法等。接下来,主要介绍Sql Server下非递归游树方法实现多叉树结构。
首先,我们建立一张表,来寄存多叉树的数据,代码以下:
CREATE TABLE TreeData(
Id int PRIMARY KEY NOT NULL, pId int,
Name nvarchar(100))
接下来,将数据插入表中,比如:
INSERT INTO TreeData Values(1, 0, 'A')
INSERT INTO TreeData Values(2, 1, 'B')INSERT INTO TreeData Values(3, 2, 'C')
INSERT INTO TreeData Values(4, 2, 'D')INSERT INTO TreeData Values(5, 3, 'E')
INSERT INTO TreeData Values(6, 4, 'F')
现在,开始进行非递归游树实现多叉树,代码以下:
DECLARE @ids table(
id int )
DECLARE @init_id int, @next_id INT
INSERT INTO @ids VALUES(0)
WHILE EXISTS(SELECT * FROM TreeData WHERE id IN (SELECT Id FROM @ids)
AND pId NOT IN (SELECT Id FROM @ids))BEGIN
SELECT @init_id = MIN(id) FROM TreeData
WHERE pId IN (SELECT Id FROM @ids) AND Id NOT IN (SELECT Id FROM @ids)
SELECT @next_id = MIN(id) FROM TreeData
WHERE pId = @init_id AND Id NOT IN (SELECT Id FROM @ids)
WHILE @next_id IS NOT NULL BEGIN
INSERT INTO @ids VALUES(@next_id) SELECT @next_id = MIN(id)
FROM TreeData WHERE pId = @init_id
AND Id NOT IN (SELECT Id FROM @ids) END
INSERT INTO @ids VALUES(@init_id)END
SELECT * FROM TreeData where id in (SELECT id FROM @ids)
最后,履行查询:
|id|pId |Name |
|–|—-|—–|
|1 |0 | A |
|2 |1 | B |
|3 |2 | C |
|4 |2 | D |
|5 |3 | E |
|6 |4 | F |
从上面结果可以看出,使用sqlserver实现多叉树结构可以便捷地实现,比如,我们可以通过使用非递归游树方法,将树状结构寄存在SQL Server中,方便统一管理和调用。
本文来源:https://www.yuntue.com/post/215630.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏