Подзапросы онлайн урок.


Подзапрос - это запрос в запросе. Подзапрос отделяется круглыми скобками и его результаты могут быть использованы во внешнем запросе.

Например, нам необходимо получить все записи студентов, возраст которых больше среднего. Если мы попытаемся исполнить запрос

SELECT * FROM student WHERE age > AVG(age);

то получим ошибку

ERROR 1111 (HY000): Invalid use of group function - некорректное использование агрегатной функции AVG.

Для того, чтобы обойти эту проблему, используют подзапросы:

SELECT * FROM student WHERE age > ( SELECT AVG (age) FROM student );
+----+------+------+-----------+
| id | name | age | phone |
+----+------+------+-----------+
| 1 | Mike | 25 | 345-65-78 |
| 2 | John | 27 | 123-65-12 |
| 6 | Andy | 24 | 323-43-98 |
| 8 | Jeff | 25 | 213-56-23 |
+----+------+------+-----------+
4 rows in set (0.00 sec)

Таким образом внутренний запрос вернул среднее значение по возрасту и оно поступило во внешний запрос.

Подзапросы также можно использовать для запросов DELETE и UPDATE.