我的程序连接到SQL Server。该程序有很多Select语句。如果程序执行
Select * from MyTable我希望SQL服务器只返回前200行,而不是返回所有行。
仅当程序显式执行时
Select top all * from MyTable然后,SQL引擎返回所有行。
SQL Server中是否有执行此操作的选项?若否,如何推行?
发布于 2017-02-08 06:18:23
您可以使用类似于以下内容:
DECLARE @topCount INT = 5;
SELECT TOP(@topCount) * FROM sys.objects;现在有了一个为所有人做的逻辑。
SET @topCount=0; --or NULL, or -1 ...
SELECT TOP(CASE WHEN ISNULL(@topCount,0)<=0 THEN 999999999 ELSE @topCount END) * FROM sys.objects;注意
您必须意识到,没有ORDER BY的TOP将导致相当不可预测的结果。哪些行是表的前5个?没有固有的秩序。
更新:
我吃得太快了。当没有指定TOP时,您希望将此行为设为默认行为。抱歉,这是不可能的。
https://stackoverflow.com/questions/42100999
复制相似问题