首次匹配SQL Server中找到的记录时,停止执行select语句

时间:2016-12-21 03:33:22

标签: sql-server-2008

在select语句中,我调用function,此函数以整数形式返回%value(计算百分比)。我的要求是当第一个百分比匹配到90%时停止执行查询。

请在下面查询。

Select Name, Calculatepercentage(Name) 
from emp

在上面的查询中,Calculatepercentage是函数,它将以整数形式返回%value。

让我们在emp表中说我有100条记录,在100条记录中,30条记录标记的百分比是> = 90。

我想在找到第一个匹配时停止查询。让我们假设在第15条记录中我们发现了标记百分比91,然后停止在第15条记录执行查询。

我可以通过循环所有100条记录来完成此任务,当找到第一个匹配的记录时,我可以跳过循环。但是执行查询需要很多时间。在该循环中,我们需要调用函数100次,而循环需要花费大量时间。

select语句本身是否有可能满足上述要求。

谢谢!

2 个答案:

答案 0 :(得分:0)

无法控制select执行。您可以将条件放在where中,也可以在表格中添加computed column来涵盖此计算。

答案 1 :(得分:0)

这不是一个完美的解决方案,因为SELECT查询没有这样的功能。但您可以根据您的标准选择第一条记录。请参阅以下查询,这将为您提供符合条件的第一条记录

SET ROWCOUNT 1
Select Name, Calculatepercentage(Name) 
from emp WHERE Calculatepercentage(Name) >= 90
Order By Name
SET ROWCOUNT 0