我有一个具有自引用关系的表,
ID parentID UserId Title
1 null 100 A
2 1 100 B
3 2 100 C
4 2 100 D
5 null 100 E
6 5 100 F
对于ID = 1的所有记录及其子项,我想将UserId从100更新为101,所以我希望
ID parentID UserId Title
1 null 101 A
2 1 101 B
3 2 101 C
4 2 101 D
5 null 100 E
6 5 100 F
如何在T-SQL中完成?
答案 0 :(得分:14)
您可能希望使用common table expression
来生成递归查询。
例如:
;with cte as
(
select * from yourtable where id=1
union all
select t.* from cte
inner join yourtable t on cte.id = t.parentid
)
update yourtable
set userid = 101
where id in (select id from cte)