我想我在這裏失去了我的想法。我嘗試更新Table1
的特定子集。假設SELECT
從Table1
返回100萬行。對於這些行中的每一行,我想交叉應用Table2
的特定計算總和。SQL - 交叉應用不能正常工作
我知道Table1
中的所有行都不能與Table2
一起加入CROSS APPLY
部分中的條件。
更新仍然表示1,000,000行受影響。在此之後,我得到了懷疑,並將'1 = 0'條件添加到CROSS APPLY
,因此它永遠不會返回一行。
但它仍然更新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
有誰知道爲什麼會發生這種情況?
我不知道爲什麼你使用'這個CROSS APPLY',這有什麼錯的'INNER'或'LEFT JOIN 「這裏?我會說你所有的'WHERE 1 = 0'都會返回NULL ... – Shaneis
微軟對你的頭銜不會感覺不錯。 :P – Sankar