2012-11-30 5 views
2

두 개의 열이 포함 된 저장 프로 시저에 로컬 테이블 변수가 있습니다. 해당 행의 열 1 값을 기반으로 하위 쿼리 결과를 각 행의 열 2 업데이트해야합니다. 같은하위 쿼리에서 임시 테이블을 참조하는 방법은 무엇입니까?

뭔가 :

UPDATE @mytable 
SET column2 = (SELECT ... FROM ... WHERE something = @mytable.column1) 

하지만이 작동하지 않는 것, 내가 @mytable이 정의되지 않은 것에 대해 오류가 발생합니다.

이 쿼리의 올바른 구문은 무엇입니까?

+0

어디에서 말씀하시는 겁니까? 저장 프로 시저 내부에서? – Kermit

+0

예. 임시 테이블과 문은 모두 같은 SP에 있습니다. – Massimo

+0

@은 임시 테이블을 나타내지 않으며 TABLE 유형의 변수를 나타냅니다. #는 임시 테이블 용입니다 (#mytable). – HardCode

답변

4

알리아스를 사용해 보셨습니까?

UPDATE temp 
SET temp.column2 = (SELECT ... FROM ... WHERE something = temp.column1) 
FROM @mytable temp 
+1

@mytable temp'에서 'UPDATE temp SET temp.column2 = (SELECT ... FROM ... WHERE something = temp.column1)이어야합니다. –

관련 문제