여기 내 생각을 잃어 가고 있습니다. Table1
의 특정 하위 집합을 업데이트하려고합니다. SELECT
이 Table1
에서 1 백만 행을 반환한다고 가정 해 보겠습니다. 각 행에 대해 Table2
의 특정 계산 된 금액을 교차 적용하고자합니다.SQL - CROSS APPLY가 제대로 작동하지 않습니다.
Table1
의 모든 행이 Table2
의 조건에 CROSS APPLY
부분으로 결합 될 수있는 것은 아니라는 사실을 알고 있습니다.
업데이트에서 여전히 1,000,000 개의 행이 영향을 받았다고합니다. 이 후 나는 의심스러워하고 CROSS APPLY
에 '1 = 0'조건을 추가하여 결코 행을 반환 할 수 없었습니다.
그러나 여전히 모든 행이 Table1
에 업데이트됩니까?
UPDATE T1
SET T1.Field1 = T2.SumField
FROM
(
SELECT *
FROM Table1
WHERE ....
) T1
CROSS APPLY
(
SELECT SUM(Field1) SumField
FROM Table2
WHERE [A lot of Fields] = [Some Values from T1]
AND 1 = 0 -- !!!
) T2
왜 이런 일이 발생하는지 알고 계십니까?
가하는'INNER' 또는 무슨 문제의 영향을받을 것'LEFT 가입 '여기? 나는 당신의'모든 1 = 0'이 NULL을 반환했다고 말하고 싶습니다 ... – Shaneis
Microsoft는 당신의 타이틀에 대해 기분이 좋지 않을 것입니다. : P – Sankar