2013-11-15 19 views
0

我在单词FROM附近得到不正确的语法。在查询检索子查询的计数时,似乎无法找到其他任何类似的内容,关于如何完成此操作的任何想法?将变量设置为以另一个查询作为源的查询计数

SET 
    @ctA = COUNT(*) 
FROM 
    (SELECT 
     theFN, theIN, theLN, theALY 
    FROM 
     aDT 
    GROUP BY 
     theFN, theIN, theLN, theALY 
    HAVING 
     theFN = @pF AND theIN = @pI AND theLN = @pL AND theALY = @pLY 
    ) 
+2

假设这是用于** SQL Server ** - 那么'SET'在这里不适用,'SET'只将一个变量初始化为一个值,例如, 'SET @ctA = 42'。如果您想运行查询并存储结果,请改用“SELECT” –

回答

1

尝试

select @ctA = COUNT(*) 
FROM 
(
    SELECT theFN, theIN, theLN, theALY 
    FROM aDT 
    GROUP BY theFN, theIN, theLN, theALY 
    HAVING theFN = @pF and theIN = @pI 
    and theLN = @pL and theALY = @pLY 
) x 
1

有很多不同的方法来架这样的查询;这里有一个:

SELECT @ctA = COUNT(*) FROM aDT 
      GROUP BY theFN, theIN, theLN, theALY 
      HAVING theFN = @pF and theIN = @pI and 
      theLN = @pL and theALY = @pLY 

...虽然你可能想过滤一个WHERE而不是一个HAVING。事实上,引擎必须完成所有的分组然后过滤;如果你使用WHERE子句然后分组,它将首先进行过滤,然后进行分组。较少的记录要分组。

ETA:marc_s提出了一个很好的观点;我重写了查询

相关问题