【发布时间】:2015-11-25 15:17:19
【问题描述】:
我有一个表content_folder_tbl,其中列出了使用folder_id 和parent_id 定义的所有文件夹和子文件夹
我想在定义根 folder_id 后获取所有文件夹 ID。
作为一种解决方法,我想出了这个查询:
select *
from content_folder_tbl
where folder_id in (select folder_id
from content_folder_tbl
where parent_id = 73
UNION
Select folder_id
from content_folder_tbl
where parent_id in (select folder_id
from content_folder_tbl
where parent_id = 73)
Union
Select folder_id
from content_folder_tbl
where parent_id in (Select folder_id
from content_folder_tbl
where parent_id in (select folder_id
from content_folder_tbl
where parent_id = 73))
)
它返回的正是我想要的,但它是多余的,只有在我有 3 个级别的文件夹时才有效。
如何重写此查询以返回任何级别的值(看起来我需要递归方法)?
73 在这种情况下是根 folder_id
预期结果示例:
【问题讨论】:
-
是的,这里需要递归 cte。
标签: sql sql-server