Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TSQL是递归更新吗?_Tsql_Recursion_Common Table Expression - Fatal编程技术网

TSQL是递归更新吗?

TSQL是递归更新吗?,tsql,recursion,common-table-expression,Tsql,Recursion,Common Table Expression,我想知道tsql(CTE)中是否存在递归更新 I可以使用例如CTE从ID=6递归更新列的值到最顶层行吗?是的,应该是: 您想用什么更新它?程序真循环行吗?或者需求都在一个更新语句中?我犯了一个错误,再次阅读最后一句话CTE本身是不可更新的。这会导致错误派生表'DirectReports'不可更新,因为派生表的一列是派生的或常量。geez,当然。。。我们可以在更新查询中加入CTE表,这解决了我的所有问题。。。我欠你一杯啤酒,伙计;)谢谢@托尼-别麻烦了。如果你接受我的回答,从今往后把我称为“陛下”

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

I可以使用例如CTE从ID=6递归更新列的
值到最顶层行吗?

是的,应该是:


您想用什么更新它?程序真循环行吗?或者需求都在一个更新语句中?我犯了一个错误,再次阅读最后一句话CTE本身是不可更新的。这会导致错误
派生表'DirectReports'不可更新,因为派生表的一列是派生的或常量。
geez,当然。。。我们可以在更新查询中加入CTE表,这解决了我的所有问题。。。我欠你一杯啤酒,伙计;)谢谢@托尼-别麻烦了。如果你接受我的回答,从今往后把我称为“陛下”,那就足够了
ID  parentID value
--  -------- -----
1   NULL     0
2   1        0
3   2        0
4   3        0
5   4        0
6   5        0
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;