为啥聚集函数不能出现在where子句中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥聚集函数不能出现在where子句中相关的知识,希望对你有一定的参考价值。
前提:聚合函数使用必须要有一个结果集。当sql语句执行到where语句时,此时还没有结果集产生,sql只是在执行筛选,筛选后才会生成组或结果集。
当where后直接跟聚合函数时,这时聚合函数找不到要执行的数据集合,导致聚合查询失败。但是我们可以把select.....where.....当做一个结果集,然后再用聚合就可以了。
另外聚合函数可以用在group by...having后,因为group by分组后是一个结果集,另外having后也可以跟条件。 参考技术A count()是一个聚集函数(也称为聚合函数)是为了选定行的数目,可以包含空值。group by 是分组, 可以按照一个多多个字段分组。 使用时应注意:select 后显示的信息:要么包含在聚集函数中,要么包含在group by 子句中。where :是一个条件语句,在where后面跟的是条件! 参考技术B
规定的,用多了就会啦
为啥不能再where语句中直接使用聚合函数
参考技术A 因为Where语句是在Group By之前执行的,都还没有Group By当然就不能使用聚合函数了。以下是SQL语句的执行顺序:
FROM
ON
OUTER(JOIN)
WHERE
GROUP BY
CUBE|ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
以上是关于为啥聚集函数不能出现在where子句中的主要内容,如果未能解决你的问题,请参考以下文章