Подзапрос возвращает записи из одной таблицы на основе значений из другой таблицы. Это запрос SELECT в другом запросе. Запрос SELECT, вызываемый как внутренний запрос, выполняется первым, а результат используется внешним запросом. Некоторые из его характерных особенностей —
-
Запрос может иметь несколько подзапросов, а подзапросы могут содержать другой подзапрос.
-
Подзапросы не возвращают дубликаты записей.
-
Если подзапрос возвращает только одно значение, вы можете использовать оператор =, чтобы использовать его с внешним запросом. Если он возвращает несколько значений, вы можете использовать IN или NOT IN.
Запрос может иметь несколько подзапросов, а подзапросы могут содержать другой подзапрос.
Подзапросы не возвращают дубликаты записей.
Если подзапрос возвращает только одно значение, вы можете использовать оператор =, чтобы использовать его с внешним запросом. Если он возвращает несколько значений, вы можете использовать IN или NOT IN.
Синтаксис
Ниже приводится общий синтаксис подзапросов.
SELECT col1, col2, col3,… FROM Outer Table WHERE col1 OPERATOR ( Inner SELECT Query);
пример
Рассмотрим следующую таблицу зарплат.
Сотрудник № | Валовой | дедукция | NetPay |
---|---|---|---|
101 | 40000 | 4000 | 36000 |
102 | 80000 | 6000 | 74000 |
103 | 90000 | 7000 | 83000 |
104 | 75000 | 5000 | 70000 |
Следующий запрос определяет номер сотрудника с самой высокой зарплатой. Внутренний SELECT выполняет функцию агрегирования для возврата максимального значения NetPay, а внешний запрос SELECT использует это значение для возврата записи сотрудника с этим значением.
SELECT EmployeeNo, NetPay FROM Salary WHERE NetPay = (SELECT MAX(NetPay) FROM Salary);
Когда этот запрос выполняется, он производит следующий вывод.