내 질문은 단일 업데이트 문에서 업데이트 순서와 관련이 있습니다. 나는 SELECT
문을 사용하여 변수를 설정할 때 변수가 순서대로 설정된다는 것을 관찰했습니다. 예를 들어 :이 시점 @Test1
에서다른 업데이트 된 열을 기반으로 열 업데이트
SELECT
@Test1 = 2,
@Test2 = @Test1 + 1
는 설정 작업이 순서대로 수행되기 때문에 2
및 @Test2
이 3
될 것입니다 될 것입니다. 하지만 UPDATE
은 어떻게됩니까?
UPDATE TestTable SET
Test1 = 2,
Test2 = Test1 + 1
는 Test2
의 계산에 Test1
의 초기 값을 사용 것인가 아니면 우리가 설정 한 값을 사용합니다? UPDATE
성명이 MERGE
인 경우 어떤 차이가 있습니까? 과제의 오른쪽에
MERGE INTO TestTable AS T
USING (
SELECT
Test1,
Test2
FROM SomeOtherTable
) AS S
ON S.Test1 = T.Test1
WHEN MATCHED THEN
UPDATE SET
T.Test1 = 2,
T.Test2 = T.Test1 + 1
;
모든 SQL 구현에서 동일하게 지정되어 있는지 확신 할 수 없습니다. 파생 된 열의 초기 재사용을 허용하는 Teradata 관련 문제를 참조하십시오. http://stackoverflow.com/questions/2458700/early - 또는 - re-ordered - re-use-of-derived-of-a-query-is-valid-ansi –