This tutorial explains how to use the MySQL EXISTS condition with syntax and examples.
The MySQL EXISTS condition is used in combination with a subquery and is considered "to be met" if the subquery returns at least one row. It can be used in a SELECT, INSERT, UPDATE, or DELETE statement.
The syntax for the EXISTS condition in MySQL is:
WHERE EXISTS ( subquery );
A SELECT statement that usually starts with SELECT * rather than a list of expressions or column names. MySQL ignores the list of expressions in the subquery anyways.
Let's look at a simple example.
The following is a SELECT statement that uses the MySQL EXISTS condition:
SELECT *
FROM customers
WHERE EXISTS (SELECT *
FROM order_details
WHERE customers.customer_id = order_details.customer_id);
This MySQL EXISTS condition example will return all records from the customers table where there is at least one record in the order_details table with the matching customer_id.
The MySQL EXISTS condition can also be combined with the NOT operator.
For example,
SELECT *
FROM customers
WHERE NOT EXISTS (SELECT *
FROM order_details
WHERE customers.customer_id = order_details.customer_id);
This MySQL EXISTS example will return all records from the customers table where there are no records in the order_details table for the given customer_id.
The following is an example of an INSERT statement that uses the MySQL EXISTS condition:
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);
The following is an example of an UPDATE statement that uses the MySQL EXISTS condition:
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);
The following is an example of a DELETE statement that uses the MySQL EXISTS condition:
DELETE FROM suppliers
WHERE EXISTS (SELECT *
FROM orders
WHERE suppliers.supplier_id = orders.supplier_id);