确定是否有任何值满足条件

时间:2016-12-05 02:36:15

标签: sql sql-server

如何编写高效查询以确定列中的1个或多个值是否为10+。我知道我可以计算值,但这将扫描所有记录。以下是我到目前为止的情况:

SELECT COUNT(*) FROM MyTable WHERE [state] = 12 AND age > 110

我希望此查询在找到超过110的第一个人不扫描整个表时停止。这可能吗?

2 个答案:

答案 0 :(得分:2)

所以你希望得到标量布尔结果?任何行匹配条件

时都会存在
DECLARE @Result bit = 
    (SELECT CASE WHEN EXISTS(SELECT * FROM MyTable WHERE [state] = 12 AND age > 110) THEN 1 ELSE 0 END)

答案 1 :(得分:0)

我不确定它对你有帮助,但你可以尝试测试:

例如,您可以确定结果集行数为100。 你可以使用前100名你的陈述。 如果原始结果行超过100,那么@@ ROWCOUNT将为真。

SELECT  TOP 100 FROM MyTable WHERE [state] = 12 AND age > 110
IF @@ROWCOUNT=100
     PRINT 'True'
ELSE 
     PRINT 'Flase'