В этом учебном пособии вы узнаете, как использовать MySQL условие EXISTS с синтаксисом и примерами.
Описание
MySQL условие EXISTS используется в сочетании с подзапросом и считается "удовлетворяемым", если подзапрос возвращает хотя бы одну строку. Он может использоваться в операторах SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис условия EXISTS в MySQL:
Параметры или аргументы
subquery - оператор SELECT, который обычно начинается с SELECT *, а не из списка выражений или имен столбцов. MySQL в любом случае игнорирует список выражений в подзапросе.
Примечание
- Операторы SQL, которые используют условие EXISTS в MySQL, очень неэффективны, так как подзапрос перезапускается для КАЖДОЙ строки в таблице внешнего запроса. Существуют более эффективные способы написания большинства запросов, которые не используют условие EXISTS.
Пример с помощью оператора SELECT
Рассмотрим простой пример.
Ниже приведен оператор SELECT, который использует MySQL условие EXISTS:
1 2 3 4 5 |
SELECT * FROM customers WHERE EXISTS (SELECT * FROM order_details WHERE customers.customer_id = order_details.customer_id); |
Этот пример MySQL условия EXISTS возвращает все записи из таблицы customers, где есть хотя бы одна запись в таблице order_details с соответствующим customer_id.
Пример оператора SELECT с использованием NOT EXISTS
MySQL условие EXISTS также может сочетаться с оператором NOT.
Например:
1 2 3 4 5 |
SELECT * FROM customers WHERE NOT EXISTS (SELECT * FROM order_details WHERE customers.customer_id = order_details.customer_id); |
Этот MySQL пример EXISTS вернет все записи из таблицы customers, в которых нет записей в таблице order_details с соответствующим customer_id.
Пример с оператором INSERT
Ниже приведен пример оператора INSERT, в котором использует MySQL условие EXISTS:
1 2 3 4 5 6 7 8 |
INSERT INTO contacts (contact_id, contact_name) SELECT supplier_id, supplier_name FROM suppliers WHERE EXISTS (SELECT * FROM orders WHERE suppliers.supplier_id = orders.supplier_id); |
Пример с оператором UPDATE
Ниже приведен пример оператора UPDATE, в которой используется MySQL условие EXISTS:
1 2 3 4 5 6 7 |
UPDATE suppliers SET supplier_name = (SELECT customers.customer_name FROM customers WHERE customers.customer_id = suppliers.supplier_id) WHERE EXISTS (SELECT * FROM customers WHERE customers.customer_id = suppliers.supplier_id); |
Пример с оператором DELETE
Ниже приведен пример оператора DELETE, в которой используется MySQL условие EXISTS:
1 2 3 4 |
DELETE FROM suppliers WHERE EXISTS (SELECT * FROM orders WHERE suppliers.supplier_id = orders.supplier_id); |