Foxtable(狐表)用户栏目专家坐堂 → sql的cte递归查询如何标记叶级


  共有1614人关注过本帖树形打印复制链接

主题:sql的cte递归查询如何标记叶级

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1908 积分:16976 威望:0 精华:0 注册:2014/7/29 19:09:00
sql的cte递归查询如何标记叶级  发帖心情 Post By:2018/11/13 18:41:00 [只看该作者]

--用CTE更新递归各级子件
WITH CTE
AS (
SELECT 产品编码, 父件编码, 0 AS Levle FROM BOM  WHERE 父件编码 IS NULL
    UNION ALL
    SELECT BOM.产品编码, BOM.父件编码, c.Levle + 1 AS Levle FROM CTE AS c
        INNER JOIN BOM ON c.产品编码 = BOM.父件编码
    WHERE Levle < 10 --限制最多10层
   )
   SELECT * FROM CTE 

这样查询 如果是最后一级的要想标记出来,在上述的递归中要在哪里加上什么才能标记出来呢?

谢谢!

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106550 积分:541915 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/11/13 20:16:00 [只看该作者]

无法标记

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1908 积分:16976 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2018/11/14 10:26:00 [只看该作者]

谢谢! 我目前是在最后再增加一个查询来实现
 SELECT * FROM CTE WHERE EXISTS(SELECT * from bom WHERE bom.父件编码 = cte.产品编码)

我还以为直接在递归有便捷的方法实现.

 回到顶部