MySQL + SQL · Lesson 73
EXISTS and NOT EXISTS
EXISTS Operator
EXISTS returns TRUE if a subquery returns at least one row. NOT EXISTS is the opposite. Often faster than IN for checking existence.
Examples
-- students who have paid at least one fee
SELECT name FROM students s
WHERE EXISTS (SELECT 1 FROM fees f WHERE f.roll_no = s.roll_no);
-- students who have NOT paid any fee
SELECT name FROM students s
WHERE NOT EXISTS (SELECT 1 FROM fees f WHERE f.roll_no = s.roll_no);
Summary
- EXISTS = true if the subquery has any row; NOT EXISTS = none.
- Great for "has related record / has no related record" checks.