TSQLに再帰更新が存在する場合、私は(CTE)は、私はそれが可能一番上の行に、ID = 6から例えばCTEを使用して再帰的にカラムvalue
を更新するTSQL再帰的な更新?
ID parentID value
-- -------- -----
1 NULL 0
2 1 0
3 2 0
4 3 0
5 4 0
6 5 0
思ったんだけど?
TSQLに再帰更新が存在する場合、私は(CTE)は、私はそれが可能一番上の行に、ID = 6から例えばCTEを使用して再帰的にカラムvalue
を更新するTSQL再帰的な更新?
ID parentID value
-- -------- -----
1 NULL 0
2 1 0
3 2 0
4 3 0
5 4 0
6 5 0
思ったんだけど?
はい、そうです。 MSDN gives an example:
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;
CTE自体は更新できません。これは、派生テーブル 'DirectReports'が派生テーブルの列が導出されるか定数であるために、派生テーブル 'DirectReports'が更新できないというエラーを返します。 –
geez、もちろん...更新クエリのCTEテーブルに参加できます。 ...私はあなたにビールを借りている、人;)ありがとう! – Tony
@トニー - 気にしないでください。あなたが私の答えを受け入れて以来、私を "あなたの陛下"と呼ぶなら、それは完全に十分でしょう。 :) –
何を更新しますか?手続き的なループですか?または単一の更新ステートメントのすべての要件ですか? – Randy
私は間違いを犯し、最後の文をもう一度読んでください – Tony