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

Mar*_*nko 4 sql-server having-clause

我一直以为我不能,但MSDN说不然.

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

我检查过并得到错误:

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

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

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

是这样的吗?

Adi*_*dil 6

您可以having不使用group by而是使用聚合函数.

select avg(price) from tbltemp having avg(price) >= 2
Run Code Online (Sandbox Code Playgroud)

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

您可能不会写"从价格> = 1000的商品中选择平均价格",但您可以写"从商品中选择平均价格>价格> => 1000"