Subquery and Exist - rFronteddu/general_wiki GitHub Wiki

Subquery

A sub query allows you to construct complex queries, essentially performing a query on the results of another query. The syntax involves two SELECT statements.

Suppose you want to get a list of students who scored better than the average grade:

SELECT student, grade
FROM test_scores
WHERE grade > (SELECT AVG(grade) FROM test_scores)

Subqueries can operate on separate tables too:

SELECT student, grade
FROM test_scores
WHERE student IN (SELECT student FROM honor_roll_table)
SELECT student, grade
FROM test_scores
WHERE student IN (SELECT student FROM honor_roll_table)

If the subquery returns multiple values you must use the IN keyword

SELECT film_id, title
FROM film
WHERE film_id IN
(SELECT inventory.film_id
FROM rental
INNER JOIN inventory ON inventory.inventory_id = rental.inventory_id
WHERE return_date BETWEEN '2005-05-29' AND '2005-05-30')
ORDER BY film_id

Exists

EXIST is used to check if there is any value. You can check if something doesn't exist by adding the NOT operator in fromt of EXISTS.

SELECT first_name, last_name
FROM customer AS c
WHERE NOT EXISTS
(SELECT * FROM payment as p 
WHERE p.customer_id = c.customer_id
AND amount > 11)