5 июля 2011 г.

oracle: sql условие EXISTS

Условие EXISTS и проверка существования набора значений в ORACLE SQL

Условие EXISTS используется только в одной ситуации — когда вы используете в запросе и подзапрос и хотите проверить, возвращает ли подзапрос записи. Если подзапрос возвращает хотя бы одну запись, то условие EXISTS вернет True, если нет — то False.

Пример применения этого условия может выглядеть так:

SELECT * FROM departments d WHERE EXISTS
(SELECT * FROM employees e WHERE d.department_id = e.department_id);

В этом примере мы возвращаем информацию о всех департаментах, для которых в таблице employees есть сотрудники.

Этот запрос можно переписать с помощью конструкции IN:
SELECT *
  FROM users
 WHERE users.ID IN (SELECT users_id
                      FROM users_res
                     WHERE users.ID = users_res.users_id AND users_res.ID > 1);



Как обычно, это условие EXISTS можно обращать при помощи NOT:

SELECT * FROM departments d WHERE NOT EXISTS
(SELECT * FROM employees e WHERE d.department_id = e.department_id);

Те же возможности предусмотрены и для Microsoft  SQL Server.