Читайте также:
|
|
Во многих примерах данной главы подзапросы используются как вы_ ражения в условиях фильтрации, поэтому для вас не будет сюрпри_ зом, что это одно из основных применений подзапросов. Но условия фильтрации, использующие подзапросы, встречаются не только в бло_ ке where. Например, следующий запрос использует блок having для по_ иска сотрудника, открывшего наибольшее количество счетов:
mysql> | SELECT open_emp_id, COUNT(*) how_many | |
_> | FROM account | |
_> | GROUP BY open_emp_id | |
_> | HAVING COUNT(*) = (SELECT MAX(emp_cnt.how_many) | |
_> | FROM (SELECT COUNT(*) how_many | |
_> | FROM account | |
_> | GROUP BY open_emp_id) emp_cnt); | |
+_____________+__________+ | ||
| open_emp_id | how_many | | ||
+_____________+__________+ | ||
| | 1 | | 8 | |
+_____________+__________+ 1 row in set (0.01 sec)
Подзапрос блока having находит максимальное число счетов, откры_ тых одним сотрудником, а основной запрос находит сотрудника, от_ крывшего это количество счетов. Если бы с наибольшим числом от_
190 Глава 9. Подзапросы
крытых счетов были связаны несколько сотрудников, запрос возвра_ тил бы несколько строк.
Дата добавления: 2015-08-17; просмотров: 55 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Gt; SUM(avail_balance) tot_deposits _> FROM account | | | Подзапросы как генераторы выражений |