You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SQL递归更新层级结构:子级层级更新异常求助

解决SQL递归更新子级层级的问题

你的递归CTE遍历逻辑是正确的,错误出在UPDATE语句的关联条件上:

原UPDATE语句里的ah.parent_id = a.asset_id会把递归计算的层级错误关联到父节点的上级,而非目标子节点本身。

修改后的完整查询

WITH RECURSIVE asset_hierarchy AS (           
  SELECT asset_id, parent_id, hierarchy_level   
 FROM asset           
 WHERE asset_id = 'AS-00000016'   
 UNION           
 SELECT E.asset_id, E.parent_id, ah.hierarchy_level + 1 
 FROM asset_hierarchy ah    
 JOIN asset E ON ah.asset_id = E.parent_id
)  
UPDATE asset a SET hierarchy_level = ah.hierarchy_level  
FROM asset_hierarchy ah   
WHERE ah.asset_id = a.asset_id;

关键修改说明

把关联条件从ah.parent_id = a.asset_id改为ah.asset_id = a.asset_id后,递归CTE中每个节点计算出的正确层级,就能精准对应到asset表中同asset_id的记录,从而完成所有子级、孙级的层级更新。

内容的提问来源于stack exchange,提问作者Doyel Mishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:39:55