SQL-数据库层次结构
我有一张这样有价值的桌子SQL-数据库层次结构,sql,sql-server,common-table-expression,Sql,Sql Server,Common Table Expression,我有一张这样有价值的桌子 id | parent | folder_name ------------------------- 1 | 0 | Root 2 | 1 | NSW 3 | 1 | QLD 4 | 2 | Sydney 5 | 3 | Brisbane 从这个表中,我想得到一个包含所有家长的文件夹,直到更高级别。示例:文件夹名称=布里斯班 id | parent | folder_name ---------------
id | parent | folder_name
-------------------------
1 | 0 | Root
2 | 1 | NSW
3 | 1 | QLD
4 | 2 | Sydney
5 | 3 | Brisbane
从这个表中,我想得到一个包含所有家长的文件夹,直到更高级别。示例:文件夹名称=布里斯班
id | parent | folder_name
-------------------------
5 | 3 | Brisbane
3 | 1 | QLD
1 | 0 | Root
我想在sql中使用JOIN
,而不是CTE
任何帮助都会很好
递归CTE
是您需要的
;WITH cte
AS (SELECT *
FROM Yourtable
WHERE folder_name = 'Brisbane'
UNION ALL
SELECT b.*
FROM cte a
INNER JOIN Yourtable b
ON a.parent = b.id)
SELECT *
FROM cte
为什么CTE解决方案会出错?如果这是你的任务,那么你需要查看谷歌,而不是询问stackoverflow。检查@Anuj-虽然我同意我们不应该在问题中没有努力时回答/鼓励,但我确实理解,对于新手来说,递归CTE不容易理解。。也许我们可以向他们展示一下如何完成任务。@Pரதீப் 是的,我同意,但给出答案并不是正确的做法,向他们展示正确的学习材料才是正确的方法@AriefMuarriefBuhari-很高兴它有帮助..查看此链接以了解有关递归cte的更多信息