TSQL递归更新?

Ton*_*ony 3 t-sql recursion common-table-expression

我想知道在tsql(CTE)中是否存在递归更新

ID  parentID value
--  -------- -----
1   NULL     0
2   1        0
3   2        0
4   3        0
5   4        0
6   5        0
Run Code Online (Sandbox Code Playgroud)

我可以value使用例如从ID = 6的CTE到最顶行来递归地更新列吗?

Vil*_*lx- 8

是的,它应该是.MSDN给出了一个例子:

USE AdventureWorks;
GO
WITH DirectReports(EmployeeID, NewVacationHours, EmployeeLevel)
AS
(SELECT e.EmployeeID, e.VacationHours, 1
  FROM HumanResources.Employee AS e
  WHERE e.ManagerID = 12
  UNION ALL
  SELECT e.EmployeeID, e.VacationHours, EmployeeLevel + 1
  FROM HumanResources.Employee as e
  JOIN DirectReports AS d ON e.ManagerID = d.EmployeeID
)
UPDATE HumanResources.Employee
SET VacationHours = VacationHours * 1.25
FROM HumanResources.Employee AS e
JOIN DirectReports AS d ON e.EmployeeID = d.EmployeeID;
Run Code Online (Sandbox Code Playgroud)

  • @Tony - 别烦心.如果你只是接受我的答案,那就完全就足够了,从此我称之为"陛下".:) (3认同)