Оператор EXISTS

Последнее обновление: 20.07.2017

Оператор EXISTS позволяет проверить, возвращает ли подзапрос какое-либо значение. Как правило, этот оператор используется для индикации того, что какая-либо строка удовлетворяет условию. То есть фактически оператор EXISTS не возвращает строки, а лишь указывает, что в базе данных есть как минимум одна строка, которые соответствует данному запросу. Поскольку возвращения набора строк не происходит, то подзапросы с подобным оператором выполняются довольно быстро.

Применение оператора имеет следующий формальный синтаксис:

WHERE [NOT] EXISTS (подзапрос)

Например, найдем всех покупателей из таблицы Customer, которые делали заказы:

SELECT *
FROM Customers
WHERE EXISTS (SELECT * FROM Orders 
                  WHERE Orders.CustomerId = Customers.Id)
Оператор EXISTS в T-SQL

Другой пример - найдем все товары из таблицы Products, на которые не было заказов в таблице Orders:

SELECT *
FROM Products
WHERE NOT EXISTS (SELECT * FROM Orders WHERE Products.Id = Orders.ProductId)
Оператор EXISTS в T-SQL

Стоит отметить, что для получения подобного результата ы могли бы использовать и оператор IN:

SELECT *
FROM Products
WHERE Id NOT IN (SELECT ProductId FROM Orders)

Но поскольку при применении EXISTS не происходит выборка строк, то его использование более оптимально и эффективно, чем использование оператора IN.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850