Поиск сотрудников, у которых есть хотя бы один подчиненный

Оператор EXISTS обеспечивает прекращение поиска во внутреннем запросе, когда по условию будет найдено хотя бы одно совпадение номеров менеджера и сотрудника:

Поиск сотрудников, у которых есть хотя бы один подчиненный

Использование оператора EXISTS

    

WHERE manager_id = outer.employee_id.

Обратите внимание, что не требуется, чтобы внутренним запросом возвращалось какое-либо конкретное значение, так что может быть выбрана константа.

Поиск всех отделов, в которых отсутствуют сотрудники

Поиск всех отделов, в которых отсутствуют сотрудники

Использование оператора NOT EXISTS

Альтернативное решение

Как показано в следующем примере, в качестве альтернативы оператору NOT EXISTS может использоваться конструкция NOT IN:

    SELECT department_id, department_name
FROM departments
WHERE department_id NOT IN (SELECT department_id
        FROM employees);
No rows selected.

Однако оператор NOT IN принимает значение FALSE, если какой-либо элемент набора равен значению NULL. Следовательно, запрос не вернет ни одной строки, даже если в таблице departments существуют строки, удовлетворяющие условию WHERE.

Далее: Подчиненные выражения

Статьи по теме
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)