根据下级目录ID找到根目录ID

  • 亚历山高
  • 2024-08-11
  • 345 人已阅读

针对下表的数据实现如下功能:

以rootDirectory分组,针对任意一个ID值,如果它的UpID=1,则取该ID,如果它的UpID<>1,则找到它的上级ID的UpID=1的那个ID。

1723342761800.png

代码如下:

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


Top