【发布时间】:2012-07-23 02:22:30
【问题描述】:
我今天下午才发现 CTE,在享受了 2 小时后,我意识到它们并没有像我们在任何其他语言中学到的那样执行常见的递归。
我的意思是,我总是将递归视为树搜索。所以我期待 CTE 一直到它发现的第一片叶子,但没有。他分层工作。它从头部开始,然后是所有分支,然后是所有子分支,等等……然后是叶子。
有没有办法让它以不同的方式搜索?也许我错过了什么…… 我在 SQL Server 2005 上工作(非,我不能为 2008 年更改)
为了清楚起见,我不想:
- 团队1
- 团队2
- 团队3
- team1-1
- team3-1
- team1-2
但是
- 团队1
- team1-1
- team1-2
- 团队2
- 团队3
- team3-1
谢谢
【问题讨论】:
-
我想到了一个
ORDER BY子句。除非您指定,否则 CTE 不会改变您无法保证任何特定订单的事实。
标签: tsql recursion common-table-expression