MySQL HAVING vs WHERE
MySQL Where Vs Where

MySQL HAVING vs WHERE

MySQL HAVING vs WHERE

In this article we will learn about MySQL HAVING vs WHERE

We all know that MySQL is one of the most popular query language. In MySql we use “WHERE” clause a lot. But we also use “HAVING”  we have to work with aggregates data.

We often get confused between these two. Lets this article help you on that.

Difference between “WHERE” and “HAVING”

  • WHERE clause: WHERE clause is used when we want to filter from a result data set. Most importantly this filter occurs before any kind of grouping.
  • HAVING clause: HAVING clause is used in a grouped data set. It cannot be used in SELECT statement without GROUP BY.
MySQL HAVING vs WHERE
MySQL Where Vs Where

 

First of all, lets see what is the hierarchy of a SQL statement. See below:

  • SELECT
  • FROM
  • WHERE
  • GROUP BY
  • HAVING

That means, any SQL query will be run like below order.

MySQL HAVING vs WHERE Example:

Let’s say we have an sample database table named “film”. There are four columns: film_id, title, release_year, rental_rate and rating.

 

mysql-having-vs-where-sample
Now check below SQL query where


SELECT rating, AVG(rental_rate)
FROM film
WHERE rating IN ('R', 'G', 'PG')
GROUP BY rating
HAVING AVG(rental_rate) > 3;

Here we see use of both “Where” clause and “Having” clause. “Where” clause is used for filter the result set of “SELECT” query. On the other hand “HAVING” query is used for filter out the result of “GROUP BY” clause.

Please note that, The GROUP BY statement is often used with aggregate functions such as: COUNT()MAX()MIN()SUM()AVG()to group the result set of one or more columns.

 

Editorial Staff

A Learner and trying to share what I learned!