我想要一個用於選擇頂行的變量。我可以根據變量選擇頂部行。但是,如果變量未提供,我想選擇所有行。SQL查詢的最高計數
目前我使用此查詢:
DECLARE @TOPCOUNT int;
SET @TOPCOUNT=10;
SELECT TOP(@TOPCOUNT) * FROM TABLE1
更新:
原始查詢是非常漫長和複雜的,所以我不重寫整個查詢,而不在其他條款中最高。
我不想使用動態查詢,因爲它的影響。
我想要一個用於選擇頂行的變量。我可以根據變量選擇頂部行。但是,如果變量未提供,我想選擇所有行。SQL查詢的最高計數
目前我使用此查詢:
DECLARE @TOPCOUNT int;
SET @TOPCOUNT=10;
SELECT TOP(@TOPCOUNT) * FROM TABLE1
更新:
原始查詢是非常漫長和複雜的,所以我不重寫整個查詢,而不在其他條款中最高。
我不想使用動態查詢,因爲它的影響。
事情是這樣的:
DECLARE @TOPCOUNT int;
--SET @TOPCOUNT=10;
IF @TOPCOUNT IS NULL
SELECT * FROM TABLE1
ELSE
SELECT TOP(@TOPCOUNT) * FROM TABLE1
添加上述更新後 - 如果這是一個存儲過程的參數,然後只是提供一個默認爲@TOPCOUNT
:
@TOPCOUNT INT = 2147483647 --max size of INT
這樣的事情會有所幫助。如果你想要所有的行,只需使用-1來初始化你的@TOPCOUNT。
IF @TOPCOUNT = -1 BEGIN
SELECT * FROM TABLE1
END
ELSE BEGIN
SELECT TOP(@TOPCOUNT) * FROM TABLE1
END
IF @TOPCOUNT IS NULL SET @TOPCOUNT=2147483647
要選擇所有的行作爲OP問,而不是行不應該這樣'IF @TOPCOUNT IS NULL SET @ TOPCOUNT = 2147483647 \'INT'的最大尺寸? –
不幸的是,我目前無法測試它,但我認爲top 0與沒有指定top相同。 – MichelZ
不,'TOP(0)'會返回 - 意外 - 0行! –
感謝Barry的解決方案! –