选择TOP N并设置变量,如果可以选择更多

Ray*_*Ray 0 sql sql-server sql-server-2008

有没有更有效的方法来执行以下SQL?

我想选择前50个结果,但我也想设置一个变量来告诉我如果没有TOP我会得到更多的结果

DECLARE @MoreExists BIT
SET @MoreExists = 0

DECLARE @Count INT
SELECT @Count = Count(*) 
   FROM MyTable WHERE ... --some expensive where clause

IF @Count > 50
    SET @MoreExists = 1

SELECT TOP 50 Field1, Field2, ... 
    FROM MyTable WHERE ... --same expensive where clause
Run Code Online (Sandbox Code Playgroud)

Dou*_*ean 5

选择51结果,使用客户端层中的前50个,并使用计数来了解是否还有更多.