Subqueries & CTEs in SQL

From the SQL cheat sheet ยท Subqueries & CTEs ยท verified Jul 2026

Subqueries & CTEs

Write nested queries and reusable named expressions.

sql
-- Subquery in WHERE
SELECT * FROM products
WHERE price > (SELECT AVG(price) FROM products);

-- EXISTS
SELECT * FROM customers c
WHERE EXISTS (
  SELECT 1 FROM orders o WHERE o.customer_id = c.id
);

-- CTE (Common Table Expression)
WITH active_users AS (
  SELECT * FROM users WHERE status = 'active'
)
SELECT * FROM active_users WHERE age > 25;
๐Ÿ’ก CTEs make complex queries readable โ€” define named blocks with WITH, then reference them
โšก EXISTS is often faster than IN for large subqueries โ€” it stops at the first match
๐Ÿ“Œ Correlated subqueries run once per outer row โ€” they can be slow on large tables
๐ŸŸข Recursive CTEs are the standard way to query hierarchical data (org charts, categories)
subqueriescteexistsrecursive

Continue with SQL

Save the full cheat sheet or work through every related task.

Back to the full SQL cheat sheet