A LEFT JOIN returns all rows from the left table and the matching rows from the right table. If there is no match, the result will contain NULL for columns from the right table.
Click to reveal answer
beginner
Write the basic syntax of a LEFT JOIN.
SELECT columns FROM left_table LEFT JOIN right_table ON left_table.key = right_table.key;
Click to reveal answer
intermediate
Why might you use a LEFT JOIN instead of an INNER JOIN?
Use LEFT JOIN when you want to keep all records from the left table, even if there are no matching records in the right table. INNER JOIN only returns rows with matches in both tables.
Click to reveal answer
beginner
In a LEFT JOIN, what happens if the right table has no matching row?
The columns from the right table will contain NULL values for that row in the result.
Click to reveal answer
intermediate
Can a LEFT JOIN return more rows than the left table originally has? Why or why not?
Yes, if a single row in the left table matches multiple rows in the right table (one-to-many relationship). A LEFT JOIN always returns at least as many rows as the left table, since every left row is included at least once.
Click to reveal answer
What does a LEFT JOIN include in its result?
AOnly rows from the right table
BOnly rows that match in both tables
CAll rows from the right table and matching rows from the left table
DAll rows from the left table and matching rows from the right table
✗ Incorrect
LEFT JOIN returns all rows from the left table and matching rows from the right table, filling with NULLs if no match.
If a row in the left table has no match in the right table, what will the right table columns show?
ANULL
BZero
CEmpty string
DError
✗ Incorrect
When no match exists, the right table columns show NULL in the result.
Which SQL keyword is used to perform a LEFT JOIN?
AINNER JOIN
BLEFT JOIN
CRIGHT JOIN
DFULL JOIN
✗ Incorrect
The keyword LEFT JOIN is used to perform a left join operation.
Can a LEFT JOIN result have fewer rows than the left table?
AYes, if the right table has no matches
BNo, it always has more rows
CNo, it always has the same or more rows
DYes, if the left table is empty
✗ Incorrect
LEFT JOIN returns all rows from the left table (at least once), so the result has the same number or more rows (if multiple matches in right table).
Which join would you use to keep all rows from the left table regardless of matches?
ALEFT JOIN
BINNER JOIN
CRIGHT JOIN
DCROSS JOIN
✗ Incorrect
LEFT JOIN keeps all rows from the left table, matching rows from the right or NULL if no match.
Explain in your own words what a LEFT JOIN does and when you might use it.
Think about keeping all your main list and adding details if available.
You got /4 concepts.
Describe the difference between LEFT JOIN and INNER JOIN with an example scenario.
Imagine a list of customers and their orders.
You got /4 concepts.
Practice
(1/5)
1. What does a LEFT JOIN do in SQL?
easy
A. Deletes rows from the left table that do not have matches in the right table.
B. Returns only rows that have matching values in both tables.
C. Returns all rows from the right table and matching rows from the left table.
D. Returns all rows from the left table and matching rows from the right table, NULL if no match.
Solution
Step 1: Understand LEFT JOIN behavior
A LEFT JOIN keeps all rows from the left table regardless of matches in the right table.
Step 2: Check what happens with unmatched rows
If no matching row exists in the right table, the result shows NULL for right table columns.
Final Answer:
Returns all rows from the left table and matching rows from the right table, NULL if no match. -> Option D
Quick Check:
LEFT JOIN = all left rows + matched right rows [OK]
Hint: LEFT JOIN keeps all left rows, fills right with NULL if no match [OK]
Common Mistakes:
Confusing LEFT JOIN with INNER JOIN
Thinking it returns all right table rows
Assuming unmatched rows are dropped
2. Which of the following is the correct syntax for a LEFT JOIN in MySQL?
easy
A. SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id;
B. SELECT * FROM table1 JOIN LEFT table2 ON table1.id = table2.id;
C. SELECT * FROM table1 LEFT OUTER JOIN table2 WHERE table1.id = table2.id;
D. SELECT * FROM table1 LEFT JOIN table2 WHERE table1.id = table2.id;
Solution
Step 1: Review standard LEFT JOIN syntax
The correct syntax uses LEFT JOIN followed by ON condition to specify matching columns.
Step 2: Check each option
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id; uses correct syntax: LEFT JOIN with ON clause. SELECT * FROM table1 JOIN LEFT table2 ON table1.id = table2.id; has JOIN LEFT which is invalid. SELECT * FROM table1 LEFT OUTER JOIN table2 WHERE table1.id = table2.id; uses WHERE instead of ON, which is incorrect for JOIN condition. SELECT * FROM table1 LEFT JOIN table2 WHERE table1.id = table2.id; uses WHERE instead of ON, invalid syntax.
Final Answer:
SELECT * FROM table1 LEFT JOIN table2 ON table1.id = table2.id; -> Option A
Quick Check:
LEFT JOIN syntax = LEFT JOIN ... ON ... [OK]
Hint: Use LEFT JOIN ... ON ... for correct syntax [OK]
Common Mistakes:
Using JOIN LEFT instead of LEFT JOIN
Using WHERE instead of ON for join condition
Putting join condition directly in WHERE after table
A. [('Alice', NULL), ('Bob', NULL), ('Carol', NULL)]
B. [('Alice', 'HR'), ('Bob', 'IT'), ('Carol', NULL)]
C. [('Alice', 'HR'), ('Bob', NULL), ('Carol', 'IT')]
D. [('Alice', 'HR'), ('Carol', 'IT')]
Solution
Step 1: Match Employees with Departments using LEFT JOIN
LEFT JOIN keeps all Employees. For each employee, it tries to find a matching department where e.id = d.emp_id.
Step 2: Check matches and NULLs
'Alice' (id=1) matches department 'HR' (emp_id=1). 'Bob' (id=2) has no matching department, so dept_name is NULL. 'Carol' (id=3) matches 'IT' (emp_id=3).
Final Answer:
[('Alice', 'HR'), ('Bob', NULL), ('Carol', 'IT')] -> Option C
Quick Check:
LEFT JOIN keeps all left rows, unmatched right columns NULL [OK]
Hint: LEFT JOIN shows all left rows; unmatched right columns are NULL [OK]
Common Mistakes:
Assuming unmatched rows are dropped
Mixing up emp_id and id columns
Ignoring ORDER BY effect
4. Identify the error in this LEFT JOIN query:
SELECT a.id, b.value FROM tableA a LEFT JOIN tableB b ON a.id = b.id WHERE b.value > 10;
medium
A. The WHERE clause filters out rows where b.value is NULL, defeating LEFT JOIN purpose.
B. The ON clause is missing a join condition.
C. LEFT JOIN should be replaced with INNER JOIN for this query.
D. The SELECT statement is missing table aliases.
Solution
Step 1: Understand effect of WHERE on LEFT JOIN
LEFT JOIN keeps all rows from tableA, but WHERE b.value > 10 excludes rows where b.value is NULL (no match), effectively turning it into INNER JOIN.
Step 2: Identify the error
The error is using WHERE to filter on right table columns after LEFT JOIN, which removes unmatched rows.
Final Answer:
The WHERE clause filters out rows where b.value is NULL, defeating LEFT JOIN purpose. -> Option A
Quick Check:
WHERE on right table column after LEFT JOIN removes unmatched rows [OK]
Hint: Use ON for filtering right table, not WHERE, to keep unmatched rows [OK]