我可以在SQL查询中使用HAVING而不是WHERE吗?

时间:2015-02-27 09:26:52

标签: sql-server having-clause

我一直以为我不能,但MSDN不这样说。

  

当不使用GROUP BY时,HAVING的行为类似于WHERE子句。

我检查过并收到错误:

  消息8121:
  列'''在HAVING子句中无效,因为   它不包含在聚合函数或GROUP BY中。

那么,它是什么?文档中的错误或鲜为人知的细节?

这可能是Sybase SQL Server中可用的功能之一。现在微软重写SQL Server更接近ANSI标准,但忘了修复文档。

情况如此?

1 个答案:

答案 0 :(得分:6)

您可以在不使用having的情况下使用group by,但可以使用汇总功能。

select avg(price) from tbltemp having avg(price) >= 2

在您提供的MSDN链接中,给出的示例指示我们使用而不是使用。

  

你可能不会写类似"从商品HAVING中选择平均价格   价格> = 1000"但是你可以写一下"从商品中选择平均价格(价格)> => 1000"