我创建了一个临时表并插入了下面给出的值。
create table #temp( val int );
insert into #temp values(333);
insert into #temp values(222);
insert into #temp values(111);
在查询下面的选择语句时,我得到了 333 作为答案。
Select *
from #temp a
Where 1 =(
Select COUNT(VAL)
from #temp b
where a.val <= b.val
);
结果:
val
333
您能帮我了解一下 SQL Server 是如何得出这个解决方案的吗?
以这种方式重写您的查询:
如果您取消注释 where 子句,您将得到
333 | 1
结果。您从外部表中请求没有重复或更大值的行。你可以看到你的内部计数查询
作为
表明只有
333
from#temp a
有一个匹配项,因为它只有一个等于或小于match 中的 3 个值#temp b
。这将返回一个计数,这就是返回
1
值333
from的原因#temp a
。