SQL查询的最高计数

时间:2012-05-22 10:33:18

标签: sql sql-server

我想要一个用于选择顶行的变量。我可以根据变量选择顶行。但是,如果未提供变量,我想选择所有行。

目前我正在使用此查询:

DECLARE @TOPCOUNT int;
SET @TOPCOUNT=10;

SELECT TOP(@TOPCOUNT) * FROM TABLE1

更新

  1. 原始查询非常冗长且复杂,因此我不会在没有else子句中的top count的情况下重写整个查询。

  2. 由于其影响,我不想使用动态查询。

3 个答案:

答案 0 :(得分:2)

这样的事情:

DECLARE @TOPCOUNT int;
--SET @TOPCOUNT=10;

IF @TOPCOUNT IS NULL
    SELECT * FROM TABLE1
ELSE
    SELECT TOP(@TOPCOUNT) * FROM TABLE1

在UPDATE之后添加 - 如果这是存储过程的参数,那么只提供@TOPCOUNT的默认值:

@TOPCOUNT INT = 2147483647 --max size of INT

答案 1 :(得分:0)

这样的事情会有所帮助。如果你想要所有行,只需用-1初始化你的@TOPCOUNT。

IF @TOPCOUNT = -1 BEGIN
  SELECT * FROM TABLE1
END
ELSE BEGIN
  SELECT TOP(@TOPCOUNT) * FROM TABLE1
END

答案 2 :(得分:0)

IF @TOPCOUNT IS NULL SET @TOPCOUNT=2147483647