Summary: in this tutorial, you will learn how to use the MariaDB having
clause to specify a search condition for groups.
Introduction to MariaDB having clause
The where
clause allows you to specify a search condition for filtering rows returned by the select
statement. However, it cannot be used for filtering summarized rows created by the group by
clause.
To specify a search condition for filtering summarized rows generated by the group by
clause, you use the having
clause.
The following illustrates the syntax of the having
clause:
select select_list from table_name group by column1, column2, ... having search_condition;
Code language: SQL (Structured Query Language) (sql)
The having
clause appears immediately after the group by
clause. To form the having
clause, you specify a search_condition
that may consist of one or more Boolean expressions. The select
statement will return only groups (or rows) which cause the search_condition
to evaluate to true.
MariaDB having clause examples
We’ll use the countries
and regions
tables from the nation
sample database:

A) Using the MariaDB having clause to filter group example
The following example uses the having
clause to find regions that have more than 10 countries:
select regions.name region, count(country_id) country_count from countries inner join regions using (region_id) group by (regions.name) having count(region_id) > 10 order by country_count desc;
Code language: SQL (Structured Query Language) (sql)

B) Using the MariaDB having clause with a complex condition example
The following example uses the having
clause to find countries that have more than 10 countries and total areas greater than 1,000,000
km2:
select regions.name region, count(country_id) country_count, sum(area) area from countries inner join regions using (region_id) group by (regions.name) having count(region_id) > 10 and area > 1000000 order by area desc, country_count desc;
Code language: SQL (Structured Query Language) (sql)

In this tutorial, you have learned how to use the MariaDB having
clause to specify a search condition for groups.