【发布时间】:2019-01-27 00:11:47
【问题描述】:
我不明白为什么递归成员调用cte时没有调用锚。
为什么它会转到递归部分中的最新记录(?)?
WITH Managers AS
(
--initialization
SELECT EmployeeID, LastName, ReportsTo
FROM Employees
WHERE ReportsTo IS NULL
UNION ALL
--recursive execution
SELECT e.employeeID,e.LastName, e.ReportsTo
FROM Employees e INNER JOIN Managers m
ON e.ReportsTo = m.employeeID
)
SELECT * FROM Managers
【问题讨论】:
-
请在问题中包含十几行样本数据,向我们展示您期望得到的结果以及您现在得到的结果。
-
如果我从这篇文章中得到的信息是正确的,它回答了我的问题:stackoverflow.com/questions/3187850/…。递归部分的最新输出用于递归部分的输入。
-
始终执行锚部分。你说“为什么它会进入最新记录?” -- 您是否对结果行进行排序?您是否有未提及的额外过滤条件?
-
这是著名的 Northwind 数据库,查询产生预期结果,第一行是 CEO (ReportsTo
NULL)。 -
this 是否回答微不足道的 rCTE 帮助?
标签: sql sql-server tsql common-table-expression recursive-query