Skip to content
MySQL

Subqueries

Use scalar, IN, EXISTS, and derived-table subqueries.

By EZ4Code Team
subqueryqueryfilter

Code

-- Scalar subquery
SELECT product_name, price,
       (SELECT AVG(price) FROM products) AS avg_price
FROM products;

-- IN subquery
SELECT name FROM customers
WHERE id IN (SELECT customer_id FROM orders WHERE total > 1000);

-- EXISTS for correlated checks
SELECT c.name FROM customers c
WHERE EXISTS (
  SELECT 1 FROM orders o
  WHERE o.customer_id = c.id AND o.status = 'completed'
);

-- Derived table
SELECT t.customer_id, t.total
FROM (
  SELECT customer_id, SUM(total) AS total
  FROM orders GROUP BY customer_id
) t
WHERE t.total > 5000;

Explanation

Subqueries let you nest one query inside another to compute values or filter rows. Scalar subqueries return a single value, IN matches against a list, and EXISTS tests for row presence efficiently. Derived tables treat a subquery as a temporary table in the FROM clause.

More MySQL Snippets