Introduction
Use EXISTS to check if a related set of data exists without returning the data itself. It helps answer yes/no questions efficiently.
SELECT column_list FROM table_name WHERE EXISTS ( SELECT 1 FROM related_table WHERE condition );
SELECT name FROM customers WHERE EXISTS ( SELECT 1 FROM orders WHERE orders.customer_id = customers.id );
SELECT product_name FROM products WHERE EXISTS ( SELECT 1 FROM reviews WHERE reviews.product_id = products.id );
SELECT department_name FROM departments WHERE EXISTS ( SELECT 1 FROM employees WHERE employees.department_id = departments.id );
CREATE TABLE customers (id SERIAL PRIMARY KEY, name TEXT); CREATE TABLE orders (id SERIAL PRIMARY KEY, customer_id INT); INSERT INTO customers (name) VALUES ('Alice'), ('Bob'), ('Charlie'); INSERT INTO orders (customer_id) VALUES (1), (1), (3); SELECT name FROM customers WHERE EXISTS ( SELECT 1 FROM orders WHERE orders.customer_id = customers.id );
EXISTS keyword do in a SQL query?EXISTS keyword is used to check if a subquery returns any rows. It returns true if there is at least one row, otherwise false.EXISTS.EXISTS in a WHERE clause?EXISTS followed by a subquery enclosed in parentheses.customers(id, name) and orders(id, customer_id), what does this query return?SELECT name FROM customers WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.id);
customer_id matching the customer's id.SELECT id FROM customers WHERE EXISTS SELECT * FROM orders WHERE orders.customer_id = customers.id;
EXISTS keyword must be followed by a subquery enclosed in parentheses.EXISTS to achieve this?A) SELECT name FROM customers WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.id AND order_date >= CURRENT_DATE - INTERVAL '30 days'); B) SELECT name FROM customers WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.id AND order_date <= CURRENT_DATE - INTERVAL '30 days'); C) SELECT name FROM customers WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.id); D) SELECT name FROM customers WHERE EXISTS (SELECT 1 FROM orders WHERE order_date >= CURRENT_DATE - INTERVAL '30 days');
Pass the test and this pattern moves unknown