Correlated vs Non-Correlated Subqueries
Understand correlated subqueries that reference the outer row, their performance characteristics, and when EXISTS beats IN.
Non-Correlated Subqueries
A non-correlated subquery doesn't reference the outer row. It runs once and its result is reused:
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE status = 'paid'
);Correlated Subqueries
A correlated subquery references the outer row — it logically re-runs for every outer row:
SELECT u.id, u.email
FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o
WHERE o.user_id = u.id
AND o.total > 1000
);All lessons in this course
- Scalar, Row, and Table Subqueries
- Correlated vs Non-Correlated Subqueries
- Common Table Expressions (WITH)
- Recursive CTEs for Hierarchies