如何在TSQL递归查询中为所有层级行添加顶级ID标识
TSQL递归查询添加顶级ID标识解决方案
要给递归查询结果的每一行添加顶级ID标识,只需在递归CTE的锚点成员中新增top_id字段并赋值为目标顶级ID(如'A1'),再在递归成员中继承这个字段即可,所有层级的行都会带上同一个顶级ID标记。
修改后的查询代码
WITH finaltable AS ( -- 锚点成员:指定顶级ID select b.*, 'A1' as top_id from mytable b where b.id = 'A1' UNION ALL -- 递归成员:继承锚点传递的top_id select rec.*, f.top_id from mytable rec INNER JOIN finaltable f ON f.deputy_id = rec.id ) SELECT * FROM finaltable
执行后返回结果
| id | deputy_id | top_id |
|---|---|---|
| A1 | B1 | A1 |
| A1 | B2 | A1 |
| B1 | null | A1 |
| B2 | C1 | A1 |
| C1 | null | A1 |
内容的提问来源于stack exchange,提问作者gri22ly
相关产品推荐
相关产品推荐

