Для того, чтобы определить условия, по которым записи будут отфильтрованы после выполнения запроса используется ключевое слово HAVING.
Запрос и использованием данного элемента имеет следующий вид:
SELECT колонка1, колонка2
FROM таблица1, таблица2
WHERE [ условия ]
GROUP BY колонка1, колонка2
HAVING [ условия ]
ORDER BY колонка1, колонка2
Пример:
Предположим, что у нас есть таблица developers, которая содержит следующие данные:
+----+-------------------+-----------+------------+--------+
| ID | NAME | SPECIALTY | EXPERIENCE | SALARY |
+----+-------------------+-----------+------------+--------+
| 1 | Eugene Suleimanov | Java | 2 | 2500 |
| 2 | Peter Romanenko | Java | 3 | 3500 |
| 3 | Andrei Komarov | C++ | 3 | 2500 |
| 4 | Konstantin Geiko | C# | 2 | 2000 |
| 5 | Asya Suleimanova | UI/UX | 2 | 1800 |
| 7 | Ivan Ivanov | C# | 1 | 900 |
| 8 | Ludmila Geiko | UI/UX | 2 | 1800 |
+----+-------------------+-----------+------------+--------+
Теперь попробуем выполнить следующий запрос:
mysql> SELECT ID, NAME, SPECIALTY, SALARY
FROM developers
GROUP BY SPECIALTY
HAVING COUNT(SPECIALTY) >= 2;
В результате выполнения данного запроса мы получим следующую таблицу:
+----+-------------------+-----------+--------+
| ID | NAME | SPECIALTY | SALARY |
+----+-------------------+-----------+--------+
| 4 | Konstantin Geiko | C# | 2000 |
| 1 | Eugene Suleimanov | Java | 2500 |
| 5 | Asya Suleimanova | UI/UX | 1800 |
+----+-------------------+-----------+--------+
На этом мы заканчиваем изучение элемента HAVING.
В следующей статье мы рассмотрим транзакции.