相关疑难解决方法(0)

CROSS APPLY 产生外连接

为了回答分区上不同的 SQL 计数, Erik Darling 发布了此代码以解决以下问题COUNT(DISTINCT) OVER ()

SELECT      *
FROM        #MyTable AS mt
CROSS APPLY (   SELECT COUNT(DISTINCT mt2.Col_B) AS dc
                FROM   #MyTable AS mt2
                WHERE  mt2.Col_A = mt.Col_A
                -- GROUP BY mt2.Col_A 
            ) AS ca;
Run Code Online (Sandbox Code Playgroud)

查询使用CROSS APPLY(not OUTER APPLY) 那么为什么在执行计划中有连接而不是连接?

在此处输入图片说明

另外,为什么取消注释 group by 子句会导致内部联接?

在此处输入图片说明

我不认为数据很重要,而是从 kevinwhat 在另一个问题上提供的数据中复制:

create table #MyTable (
Col_A varchar(5),
Col_B int
)

insert into #MyTable values ('A',1)
insert into #MyTable values ('A',1)
insert into …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan cross-apply

18
推荐指数
1
解决办法
1959
查看次数

标签 统计

cross-apply ×1

execution-plan ×1

sql-server ×1