Difference between HAVING and WHERE clause in SQL [duplicate]
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
What is the difference between having and where
where
filters on the select ... from
having
filters on the aggregate results from the group by ...
So, looking at your example again:
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
Here, WHERE column_name operator value
says "Return results for table_name where
'column_name operator value' is true".
Only after all the results from these conditions are found, it groups by column_name.
Then HAVING aggregate_function(column_name) operator value
says "For the resulting aggregate groups, run 'aggregate_function(column_name)' and return only results where 'aggregate_function(column_name) operator value' is true."
- WHERE clause can be used with SELECT,INSERT,DELETE etc statement but the HAVING clause can only be used with SELECT statement.
- HAVING clause can only be used with GROUP BY clause
- In WHERE clause we can not use any agregate function directly
精彩评论