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

标签 sql-server having-clause

我一直以为我不能,但是MSDN另有说法。

When GROUP BY is not used, HAVING behaves like a WHERE clause.

我检查并得到错误:

Msg 8121:
Column '...' is invalid in the HAVING clause because it is not contained in either an aggregate function or the GROUP BY.

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

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

是这样吗?

最佳答案

您可以在不使用group by但在聚合函数上使用having

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

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

You may NOT write something like "select avg(price) from goods HAVING price >= 1000" but you may write "select avg(price) from goods WHERE price >= > 1000"

关于sql-server - 我可以在 SQL 查询中使用 HAVING 而不是 WHERE 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28761521/

相关文章:

mysql - 你可以在mysql的WHERE子句中使用别名吗?

SQL 一个值属于集合

sql - 如何按 CASE 语句中的值进行搜索?

sql-server - 在sql server中一次更新所有字段

sql - 这两个 SQL 语句之间是否有任何性能或功能差异?

MySQL COUNT(*) GROUP BY HAVING COUNT=?

sql-server - 无法在 Sql Server 表中将身份规范更改为"is"

mysql - having 子句中的最大计数

MySQL 使用行计数和分组进行选择

mysql - WHERE 与 HAVING 具有多个 IF/LIKE 的计算字段