SQL中HAVING和WHERE子句的区别

use*_*058 4 sql where-clause having-clause

SELECT column_name, aggregate_function(column_name) 
FROM table_name 
WHERE column_name operator value 
GROUP BY column_name 
HAVING aggregate_function(column_name) operator value
Run Code Online (Sandbox Code Playgroud)

拥有和在哪里有什么区别

Ben*_*Lee 8

where 过滤器 select ... from

having 对聚合结果的过滤来自 group by ...

所以,再看一下你的例子:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value
Run Code Online (Sandbox Code Playgroud)

这里,WHERE column_name operator value"返回table_name的结果,其中'column_name运算符值'为真".

只有在找到这些条件的所有结果后,才按column_name分组.

然后HAVING aggregate_function(column_name) operator value说"对于生成的聚合组,运行'aggregate_function(column_name)'并仅返回'aggregate_function(column_name)运算符值'为真的结果."

  • +1点,但是`s /是条件/ filters/g`的精度.即,"过滤行的位置;具有过滤器组." #pedantic (2认同)

Phi*_*ach 7

  1. WHERE子句可以与SELECT,INSERT,DELETE等语句一起使用,但HAVING子句只能与SELECT语句一起使用.
  2. HAVING子句只能与GROUP BY子句一起使用
  3. 在WHERE子句中,我们不能直接使用任何agregate函数