选择没有顶部然后假设前N

时间:2017-02-07 22:11:59

标签: sql-server

我的程序连接到SQL Server。该程序有很多Select语句。如果程序执行

Select * from MyTable

我希望SQL服务器只返回前200行,而不是返回所有行。

仅在程序明确执行

Select top all * from MyTable

然后SQL引擎返回所有行。

SQL Server中是否有选项可以执行此操作?如果没有,它如何实施?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

DECLARE @topCount INT = 5;

SELECT TOP(@topCount) * FROM sys.objects;

现在使用 do-it-for-all-logic

SET @topCount=0; --or NULL, or -1 ...

SELECT TOP(CASE WHEN ISNULL(@topCount,0)<=0 THEN 999999999 ELSE @topCount END) * FROM sys.objects;

注意

您必须知道,TOP没有ORDER BY会导致相当不可预测的结果。您的表的前5 哪些行?没有内在的秩序......

UPDATE:

我很快。如果没有指定TOP,您希望此行为为默认行为。对不起,这是不可能的。