SQL подзапросы — это запросы, вложенные в другой запрос. Существует пять основных типов, каждый из которых служит определённой цели.
Возвращает максимум одну строку. Обычно используется с операторами сравнения одного значения, такими как =, < или >.
SELECT name FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);
Возвращает несколько строк. Должен использоваться с операторами типа IN, ANY или ALL.
SELECT name FROM employees
WHERE department_id IN (SELECT id FROM departments WHERE location = 'NY');
Возвращает два или более столбца, позволяя сравнивать несколько значений одновременно.
SELECT name FROM employees
WHERE (department_id, job_id) IN (SELECT department_id, job_id FROM job_history);
Ссылается на столбцы из внешнего запроса и выполняется заново для каждой строки, обрабатываемой внешним запросом.
SELECT name FROM employees e
WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = e.department_id);
Подзапрос, расположенный внутри другого подзапроса, создающий несколько уровней вложенности.
SELECT name FROM employees
WHERE department_id IN (SELECT id FROM departments
WHERE location_id = (SELECT location_id FROM locations WHERE city = 'NY'));
Однострочный подзапрос безопасно использовать с оператором IN, потому что он возвращает не более одной строки, что делает оператор функционально эквивалентным =.
Новый — ещё не проверен сообществом
Вы