SQL查询在使用where 1条件时返回相同的值

l.l*_*ith 4 sql-server query

我创建了一个临时表并插入了如下所示的值。

create table #temp( val int );

insert into #temp values(333);
insert into #temp values(222);
insert into #temp values(111);
Run Code Online (Sandbox Code Playgroud)

在查询下面的 select 语句时,我得到了 333 作为答案。

Select * 
from #temp a 
Where 1 =(
    Select COUNT(VAL) 
    from #temp b 
    where a.val <= b.val
);
Run Code Online (Sandbox Code Playgroud)

结果:

val

333
Run Code Online (Sandbox Code Playgroud)

您能否帮助我了解 SQL Server 是如何使用此解决方案的。

Den*_*kin 6

以这种方式重写您的查询:

SELECT a.*, x.cnt
FROM #temp a
CROSS APPLY (
    SELECT COUNT(VAL) AS cnt
    FROM #temp b
    WHERE a.val <= b.val
) x
--WHERE x.cnt = 1
Run Code Online (Sandbox Code Playgroud)

如果您取消注释 where 子句,您将得到333 | 1结果。您从外部表中请求没有重复或更大值的行。