재귀 함수를 돌려서 나온 값이
1
4
6
7
8
이런 값들이 나오는대
요기서 업데이트 시키려면 어떻해야할까요?
;WITH TEST(idx,ref_delet) AS
( SELECT idx, ref_delet FROM us_board
where idx = '3'
UNION ALL
SELECT A.idx, A.ref_delet FROM
us_board AS A
join
TEST AS B
on A.ref_delet = B.idx
)SELECT idx FROM TEST
예를들어 저런식이 있다면 나온 위식의 결과 값 idx랑 업데이트 시키고 싶은 idx값이을 넣고 싶은대 자꼬 뻥뻥 오류나내요;
서브쿼리식으로 쓰면 안되는건지;;
서버용 언어에서 따로 변수 줘서 처리 할 수 도 있는대; 오기가 생기내요;;
예를들어 아래처럼 했을때 오류가나요 ㅠ
update us_board set b_title = '성공' where idx = (
;WITH TEST(idx,ref_delet) AS
( SELECT idx, ref_delet FROM us_board
where idx = '3'
UNION ALL
SELECT A.idx, A.ref_delet FROM
us_board AS A
join
TEST AS B
on A.ref_delet = B.idx
)SELECT idx FROM TEST )
좀 도와주세요 ㅠ
또한 궁금한게 하나 더있는대 where 에서 update나 insert 함수를 이용해 업데이트나 인설트도 시킬 수 있나요?
Comment 1
-
한태
2016.03.08 19:59
create table cteup(idx int identity(1,1),supervisorid int,name varchar(10),role varchar(10),title varchar(10))insert into cteup values(0,'Tim','CEO',null),(1,'John','CIO',null),(2,'Herny','IT HEAD',null),(2,'Messi','Marketing',null),(2,'Magic','HR',null),(5,'Andy','Engineer',null)select * from cteup;with cte as(select idx, supervisorid, name, role, titlefrom cteupwhere idx=6union allselect cu.idx, cu.supervisorid,cu .name, cu.role, cu.titlefrom cteup cuinner join cte con cu.idx=c.supervisorid)update cteupset title='성공'from ctewhere cte.idx=cteup.idxselect * from cteupCTE를 이용하여 받은 값을 where 조건에 넣어주시면 됩니다.CTE의 경우에는 결과를 한 번만 사용할 수있기에 CTE 문장 바로 직후에 사용하여야 합니다.