Полный цикл в digital

EXISTS - возвращает true, если подзапрос возвращает записи

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

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

SELECT * FROM `имя_таблицы` WHERE NOT EXISTS (подзапрос);
SELECT * FROM `имя_таблицы` WHERE EXISTS (подзапрос);

Например, найдем все товары из таблицы Products, на которые есть заказы в таблице Orders:

SELECT * FROM `Products`
WHERE EXISTS
(SELECT * FROM Orders WHERE Orders.ProductId = Products.Id);

Если мы хотим узнать, наоброт, есть ли в таблице строки, которые НЕ удовлетворяют условию, то можно использовать операторы NOT EXISTS. Например, найдем все товары из таблицы Products, на которые не было заказов в таблице Orders:

SELECT * FROM `Products`
WHERE NOT EXISTS 
(SELECT * FROM Orders WHERE Products.Id = Orders.ProductId);

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

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

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

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг