MySQL exists


Оператор EXISTS перевіряє, чи повертає підзапит якесь значення. Як правило, цей оператор використовується для індикації того, що як мінімум один рядок в таблиці задовольняє деякому умовою. Оскільки повернення набору рядків не відбувається, то підзапити з подібним оператором виконуються досить швидко.

Застосування оператора має наступний формальний синтаксис:

WHERE [NOT] EXISTS (підзапит)

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

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

Оператор EXISTS в MySQL

Якщо ми хочемо дізнатися, наоброт, чи є в таблиці рядки, які НЕ задовольняють умові, то можна використовувати оператори 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 .


Наш партнер:
beta test mp3 playlist downloader