SQL - CROSS APPLY无法正常工作

时间:2017-04-26 14:10:31

标签: sql sql-server cross-apply

我想我在这里失去了理智。我尝试更新Table1的特定子集。让我们说来自SELECT的{​​{1}}返回100万行。对于这些行中的每一行,我想交叉应用Table1中的特定计算总和。

我知道并非Table2中的所有行都可以使用Table1部分中的条件加入Table2

此更新仍然表示有1,000,000行受到影响。在此之后,我怀疑并添加了' 1 = 0'条件到CROSS APPLY所以它永远不会返回一行。

但它仍会更新CROSS APPLY中的所有行?

Table1

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

第二个查询不是空集 - 它返回一个值NULL,它与result连接。

UPDATE T1
SET T1.Field1 = T2.SumField
FROM
       (
        SELECT *
        FROM Table1
        WHERE ....
    ) T1
CROSS APPLY
    (
        SELECT Field1 SumField
        FROM Table2
        WHERE [A lot of Fields] = [Some Values from T1]
        AND 1 = 0 -- !!!
    ) T2

你会受到影响的0行(注意缺少SUM)