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 does a LEFT JOIN do in SQL?
A LEFT JOIN returns all rows from the left table and the matched rows from the right table. If there is no match, the result is NULL on the right side.
Click to reveal answer
beginner
How can you find rows in the left table that have no matching rows in the right table using LEFT JOIN?
Use a LEFT JOIN and then filter where the right table's key column is NULL. This shows unmatched rows from the left table.
Click to reveal answer
beginner
Why do we check for NULL in the right table's columns after a LEFT JOIN?
Because unmatched rows from the left table will have NULL values in the right table's columns, indicating no match was found.
Click to reveal answer
intermediate
Write a simple SQL query to find customers who have no orders using LEFT JOIN.
SELECT customers.* FROM customers LEFT JOIN orders ON customers.id = orders.customer_id WHERE orders.customer_id IS NULL;
Click to reveal answer
intermediate
What is the difference between LEFT JOIN and INNER JOIN when finding unmatched rows?
INNER JOIN returns only matching rows from both tables, so it excludes unmatched rows. LEFT JOIN returns all left table rows including unmatched ones.
Click to reveal answer
What does the condition 'WHERE right_table.id IS NULL' do after a LEFT JOIN?
AFinds rows in the left table with no match in the right table
BFinds rows in the right table only
CFinds rows with matching keys in both tables
DDeletes unmatched rows
✗ Incorrect
Checking for NULL in the right table's key column after a LEFT JOIN identifies rows in the left table that have no matching row in the right table.
Which JOIN type returns all rows from the left table regardless of matches?
ALEFT JOIN
BRIGHT JOIN
CFULL JOIN
DINNER JOIN
✗ Incorrect
LEFT JOIN returns all rows from the left table and matched rows from the right table.
If you want to find unmatched rows in the right table, which JOIN would you use?
ALEFT JOIN
BRIGHT JOIN
CINNER JOIN
DCROSS JOIN
✗ Incorrect
RIGHT JOIN returns all rows from the right table and matched rows from the left table. Checking for NULL in the left table columns finds unmatched right table rows.
What happens to unmatched rows from the right table in a LEFT JOIN?
AThey are duplicated
BThey are included with NULLs in left table columns
CThey cause an error
DThey are excluded from the result
✗ Incorrect
LEFT JOIN includes all left table rows. Unmatched right table rows are excluded.
Which SQL clause is essential to filter unmatched rows after a LEFT JOIN?
AGROUP BY
BHAVING
CWHERE right_table.column IS NULL
DORDER BY
✗ Incorrect
Filtering with WHERE right_table.column IS NULL selects rows from the left table without matches in the right table.
Explain how to find unmatched rows in one table using LEFT JOIN.
Think about what happens to unmatched rows in a LEFT JOIN result.
You got /3 concepts.
Describe the difference between INNER JOIN and LEFT JOIN when looking for unmatched rows.
Consider which join keeps unmatched rows from the left table.
You got /3 concepts.
Practice
(1/5)
1. What does a LEFT JOIN combined with WHERE right_table.key IS NULL do in SQL?
easy
A. Finds rows in the right table that have no matching rows in the left table
B. Finds rows in the left table that have no matching rows in the right table
C. Returns all rows from both tables regardless of matches
D. Deletes unmatched rows from the left table
Solution
Step 1: Understand LEFT JOIN behavior
A LEFT JOIN returns all rows from the left table and matching rows from the right table. If no match exists, right table columns are NULL.
Step 2: Apply WHERE condition to filter unmatched rows
Filtering with WHERE right_table.key IS NULL selects only those left table rows without a match in the right table.
Final Answer:
Finds rows in the left table that have no matching rows in the right table -> Option B
Quick Check:
LEFT JOIN + IS NULL = unmatched left rows [OK]
Hint: LEFT JOIN + IS NULL filters unmatched left table rows [OK]
Common Mistakes:
Confusing unmatched rows as from right table
Using INNER JOIN instead of LEFT JOIN
Not checking for NULL in right table columns
2. Which of the following SQL queries correctly finds customers without orders using LEFT JOIN?
easy
A. SELECT c.id FROM customers c RIGHT JOIN orders o ON c.id = o.customer_id WHERE c.id IS NULL;
B. SELECT c.id FROM customers c INNER JOIN orders o ON c.id = o.customer_id WHERE o.customer_id IS NULL;
C. SELECT c.id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id WHERE c.id IS NULL;
D. SELECT c.id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id WHERE o.customer_id IS NULL;
Solution
Step 1: Identify correct JOIN type
LEFT JOIN keeps all customers and matches orders; unmatched orders will be NULL.
Step 2: Filter unmatched orders
WHERE o.customer_id IS NULL selects customers without orders.
Final Answer:
SELECT c.id FROM customers c LEFT JOIN orders o ON c.id = o.customer_id WHERE o.customer_id IS NULL; -> Option D
Quick Check:
LEFT JOIN + right table NULL = unmatched left rows [OK]
Hint: Use LEFT JOIN and check right table key IS NULL [OK]
Common Mistakes:
Using INNER JOIN which excludes unmatched rows
Checking NULL on left table columns
Using RIGHT JOIN incorrectly for this case
3. Given tables employees(id, name) and tasks(employee_id, task_name), what does this query return?
SELECT e.name FROM employees e LEFT JOIN tasks t ON e.id = t.employee_id WHERE t.employee_id IS NULL;
medium
A. Names of employees who have no tasks assigned
B. Names of employees who have at least one task
C. All employee names regardless of tasks
D. Names of tasks without employees
Solution
Step 1: Analyze LEFT JOIN and ON condition
The query joins employees with tasks on employee ID, keeping all employees.
Step 2: Filter rows where tasks are missing
WHERE t.employee_id IS NULL selects employees with no matching tasks.
Final Answer:
Names of employees who have no tasks assigned -> Option A
Quick Check:
LEFT JOIN + NULL in right table = unmatched left rows [OK]
Hint: LEFT JOIN + right key NULL = unmatched left rows [OK]
Common Mistakes:
Thinking it returns employees with tasks
Confusing NULL check on left table
Assuming INNER JOIN behavior
4. Identify the error in this query intended to find products without sales:
SELECT p.product_id FROM products p LEFT JOIN sales s ON p.product_id = s.product_id WHERE p.product_id IS NULL;
medium
A. ON condition is incorrect, should join on sales_id
B. LEFT JOIN should be INNER JOIN
C. The WHERE clause should check s.product_id IS NULL, not p.product_id
D. Query is correct and will return unmatched products
Solution
Step 1: Understand LEFT JOIN result
LEFT JOIN keeps all products; unmatched sales columns are NULL.
Step 2: Check WHERE clause correctness
Filtering on p.product_id IS NULL is wrong because left table columns are never NULL in LEFT JOIN; should check s.product_id IS NULL.
Final Answer:
The WHERE clause should check s.product_id IS NULL, not p.product_id -> Option C
Quick Check:
Filter NULL on right table columns, not left [OK]
Hint: Check NULL on right table columns after LEFT JOIN [OK]
Common Mistakes:
Checking NULL on left table columns
Using INNER JOIN instead of LEFT JOIN
Incorrect ON join condition
5. You have tables students(id, name) and enrollments(student_id, course_id). Write a query to find students not enrolled in any course, considering some students may have NULL IDs. Which query correctly handles this?
hard
A. SELECT s.name FROM students s LEFT JOIN enrollments e ON s.id = e.student_id WHERE e.student_id IS NULL AND s.id IS NOT NULL;
B. SELECT s.name FROM students s RIGHT JOIN enrollments e ON s.id = e.student_id WHERE s.id IS NULL;
C. SELECT s.name FROM students s INNER JOIN enrollments e ON s.id = e.student_id WHERE s.id IS NULL;
D. SELECT s.name FROM students s LEFT JOIN enrollments e ON s.id = e.student_id WHERE e.student_id IS NULL;
Solution
Step 1: Use LEFT JOIN to find unmatched students
LEFT JOIN students with enrollments keeps all students; unmatched enrollments are NULL.
Step 2: Filter students without enrollments and exclude NULL student IDs
WHERE e.student_id IS NULL finds students without courses; adding s.id IS NOT NULL excludes students with NULL IDs to avoid incorrect matches.
Final Answer:
SELECT s.name FROM students s LEFT JOIN enrollments e ON s.id = e.student_id WHERE e.student_id IS NULL AND s.id IS NOT NULL; -> Option A
Quick Check:
LEFT JOIN + right NULL + exclude NULL left keys = correct unmatched [OK]
Hint: Exclude NULL keys on left table when filtering unmatched [OK]