Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a subquery in SQL?
A subquery is a query nested inside another query. It runs first and its result is used by the outer query.
Click to reveal answer
beginner
What is a JOIN in SQL?
A JOIN combines rows from two or more tables based on a related column between them.
Click to reveal answer
intermediate
Which SQL operation generally performs better: JOIN or subquery?
JOINs usually perform better because they allow the database to optimize data retrieval by combining tables directly.
Click to reveal answer
intermediate
When might a subquery be preferred over a JOIN?
Subqueries are preferred when you need to filter or calculate values before joining or when the logic is simpler to express with nested queries.
Click to reveal answer
intermediate
How can JOINs affect query readability compared to subqueries?
JOINs can make queries longer but clearer when combining tables, while subqueries can simplify logic but sometimes make queries harder to read if nested deeply.
Click to reveal answer
Which SQL operation typically allows the database to optimize data retrieval better?
AJOIN
BSubquery
CBoth perform the same
DNeither
✗ Incorrect
JOINs usually allow better optimization because they combine tables directly.
When is a subquery often more useful than a JOIN?
AWhen no related columns exist
BWhen combining large tables
CWhen performance is the only concern
DWhen filtering or calculating before joining
✗ Incorrect
Subqueries are useful to filter or calculate values before joining.
What is a potential downside of using many nested subqueries?
AImproved performance
BSimpler query logic
CHarder to read and maintain
DAutomatic indexing
✗ Incorrect
Deeply nested subqueries can make queries harder to read and maintain.
Which SQL clause is used to combine rows from two tables?
AWHERE
BJOIN
CGROUP BY
DORDER BY
✗ Incorrect
JOIN is used to combine rows from two or more tables.
If you want to improve query performance, which should you try first?
AReplace subqueries with JOINs
BReplace JOINs with subqueries
CAdd more nested subqueries
DRemove all WHERE clauses
✗ Incorrect
Replacing subqueries with JOINs often improves performance.
Explain the performance trade-offs between using subqueries and JOINs in SQL.
Think about how the database processes each type.
You got /4 concepts.
Describe scenarios where you would prefer a subquery over a JOIN.
Consider the clarity and filtering needs.
You got /4 concepts.
Practice
(1/5)
1. Which statement best describes the performance difference between a JOIN and a subquery in SQL?
easy
A. JOINs generally perform better because they combine tables in a single step.
B. Subqueries always perform better because they run separately.
C. JOINs and subqueries have the same performance in all cases.
D. Subqueries are faster because they use less memory.
Solution
Step 1: Understand how JOINs work
JOINs combine rows from two or more tables in one operation, which is often optimized by the database engine.
Step 2: Compare with subqueries
Subqueries run separately and then feed results to the main query, which can be slower especially with large data.
Final Answer:
JOINs generally perform better because they combine tables in a single step. -> Option A
Quick Check:
JOIN performance > Subquery performance [OK]
Hint: JOINs usually run faster than subqueries [OK]
Common Mistakes:
Thinking subqueries always run faster
Assuming JOINs and subqueries are always equal
Believing subqueries use less memory
2. Which of the following SQL queries correctly uses a JOIN to get all customers and their orders?
easy
A. SELECT customers.name, orders.id FROM customers JOIN orders ON customers.id = orders.customer_id;
B. SELECT customers.name, orders.id FROM customers WHERE customers.id = orders.customer_id;
C. SELECT customers.name, orders.id FROM customers, orders WHERE customers.id == orders.customer_id;
D. SELECT customers.name, orders.id FROM customers JOIN orders ON customers.customer_id = orders.id;
Solution
Step 1: Check JOIN syntax
Correct JOIN syntax uses ON with matching keys: customers.id = orders.customer_id.
Step 2: Validate each option
SELECT customers.name, orders.id FROM customers JOIN orders ON customers.id = orders.customer_id; uses correct JOIN and ON condition. SELECT customers.name, orders.id FROM customers WHERE customers.id = orders.customer_id; uses WHERE without JOIN, which is invalid here. SELECT customers.name, orders.id FROM customers, orders WHERE customers.id == orders.customer_id; uses double equals (==) which is invalid in SQL. SELECT customers.name, orders.id FROM customers JOIN orders ON customers.customer_id = orders.id; reverses keys incorrectly.
Final Answer:
SELECT customers.name, orders.id FROM customers JOIN orders ON customers.id = orders.customer_id; -> Option A
Quick Check:
Correct JOIN syntax = SELECT customers.name, orders.id FROM customers JOIN orders ON customers.id = orders.customer_id; [OK]
Hint: JOIN uses ON with matching keys, not WHERE or == [OK]
Common Mistakes:
Using WHERE instead of ON for JOIN condition
Using == instead of = in SQL
Mixing up key columns in ON clause
3. Given the tables employees(id, name) and departments(id, name, manager_id), what will this query return?
SELECT e.name FROM employees e WHERE e.id IN (SELECT d.manager_id FROM departments d);
medium
A. Syntax error due to subquery.
B. Names of all employees regardless of department.
C. Names of employees who are not managers.
D. Names of employees who are managers of any department.
Solution
Step 1: Understand the subquery
The subquery SELECT d.manager_id FROM departments d returns all manager IDs from departments.
Step 2: Analyze the main query
The main query selects employee names where their ID is in the list of manager IDs, so it returns employees who manage departments.
Final Answer:
Names of employees who are managers of any department. -> Option D
Quick Check:
Subquery filters managers = Names of employees who are managers of any department. [OK]
Hint: IN with subquery filters matching IDs [OK]
Common Mistakes:
Thinking it returns all employees
Confusing managers with non-managers
Assuming syntax error in subquery
4. Identify the error in this SQL query that uses a JOIN:
SELECT c.name, o.amount FROM customers c JOIN orders o WHERE c.id = o.customer_id;
medium
A. Incorrect table aliases used.
B. Using WHERE instead of HAVING for condition.
C. Missing ON keyword before join condition.
D. No error; query is correct.
Solution
Step 1: Review JOIN syntax
JOIN requires an ON clause to specify join condition, not WHERE.
Step 2: Check the query
The query uses WHERE for join condition, which is incorrect syntax for explicit JOIN.
Final Answer:
Missing ON keyword before join condition. -> Option C
Quick Check:
JOIN needs ON, not WHERE [OK]
Hint: JOIN must have ON clause for conditions [OK]
Common Mistakes:
Using WHERE instead of ON for JOIN
Confusing HAVING with WHERE
Assuming aliases cause error
5. You want to list all products and their category names. The products table has category_id, and the categories table has id and name. Which approach is better for performance and why?
Options: A) Use a JOIN to combine products and categories. B) Use a subquery in SELECT to get category name for each product. C) Use a subquery in WHERE to filter products by category name. D) Use UNION to combine products and categories.
hard
A. Subquery in SELECT is better because it runs once per product.
B. JOIN is better because it retrieves all data in one step efficiently.
C. Subquery in WHERE is better because it filters early.
D. UNION is better because it merges tables.
Solution
Step 1: Understand the data retrieval goal
You want product info with category names, which requires combining data from two tables.
Step 2: Compare approaches
JOIN combines tables in one efficient operation. Subqueries in SELECT run once per row, causing slower performance. Subquery in WHERE filters but doesn't retrieve category names. UNION merges rows, not related here.
Final Answer:
JOIN is better because it retrieves all data in one step efficiently. -> Option B
Quick Check:
JOIN efficiency > subqueries for this task [OK]
Hint: JOIN combines tables efficiently for related data [OK]
Common Mistakes:
Using subquery in SELECT causing slow per-row lookup
Confusing UNION with JOIN
Using subquery in WHERE without retrieving needed data