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