2013-10-08 2 views
3

나는 T-SQL 재귀 쿼리 - 어떻게 수행합니까?

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 

내가 100에서 ID = 1과 그 자녀가있는 모든 레코드 (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에서는 어떻게 할 수 있습니까?

답변

10

아마도 재귀 쿼리를 생성 할 수있는 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)