根据下级目录ID找到根目录ID
- 2024-08-11
- 345 人已阅读
针对下表的数据实现如下功能:
以rootDirectory分组,针对任意一个ID值,如果它的UpID=1,则取该ID,如果它的UpID<>1,则找到它的上级ID的UpID=1的那个ID。
代码如下:
WITH RecursiveCTE AS (
SELECT ID,cName,UpID,rootDirectory,
CASE WHEN UpID = 1 THEN ID ELSE NULL END AS TopLevelID
FROM B_FilesClassList WHERE UpID=1
UNION ALL
SELECT d.ID,d.cName,d.UpID,d.rootDirectory,
CASE WHEN d.UpID=1 THEN d.ID ELSE r.TopLevelID END AS TopLevelID
FROM B_FilesClassList d
INNER JOIN RecursiveCTE r ON d.UpID = r.ID
)
SELECT DISTINCT ID,cName,UpID,rootDirectory,TopLevelID FROM RecursiveCTE WHERE ID=7