0PricingLogin
SQL Academy · Lesson

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

  1. Scalar, Row, and Table Subqueries
  2. Correlated vs Non-Correlated Subqueries
  3. Common Table Expressions (WITH)
  4. Recursive CTEs for Hierarchies
← Back to SQL Academy