一张树结构的表,如何从一个子节点,获取到这个子节点的根节点?
表结构如下:
说明:
CategoryID 是节点编号;
CategoryName 是节点名称;
ParentCategoryID 是节点的父节点的编号;
测试数据如下:
测试用例:
已知节点ID是7,求它的根节点。(从上图,我们可以看到,结果应该是 2)
下面,给出实现SQL,一个存储过程,函数也可以
CREATE PROCEDURE GetRootCategoryID ( @nodeID INT ) AS BEGIN SET NOCOUNT ON; DECLARE @rootID INT, @currentID INT SELECT @rootID = ParentCategoryID, @currentID = @nodeID FROM test2 WHERE CategoryID = @nodeID; WHILE @rootID > 0 BEGIN SELECT @rootID = ParentCategoryID, @currentID = CategoryID FROM test2 WHERE CategoryID = @rootID; END RETURN @currentID; END
执行的语句:
转载于:https://blog.51cto.com/lightweight/473784