What happens when a NULL value is used in a JOIN condition?
In SQL, NULL represents an unknown value. When used in a JOIN condition, NULL does not match any value, including another NULL. This means rows with NULL in the join columns are usually excluded from the join result.
Click to reveal answer
beginner
Why do NULLs cause rows to be excluded in INNER JOINs?
INNER JOIN returns rows where the join condition is true. Since NULL compared to any value (even NULL) is unknown (not true), rows with NULL in join columns do not satisfy the condition and are excluded.
Click to reveal answer
intermediate
How can you include rows with NULLs in join columns when joining tables?
You can use LEFT JOIN or RIGHT JOIN to include rows with NULLs from one side. Also, you can use conditions like ON t1.col = t2.col OR (t1.col IS NULL AND t2.col IS NULL) to treat NULLs as equal in join conditions.
Click to reveal answer
beginner
What is the difference between NULL and empty string ('') in JOIN conditions?
NULL means unknown or missing value, while empty string is a known value with zero length. In JOINs, NULL does not match anything, but empty string matches another empty string exactly.
Click to reveal answer
intermediate
Write a JOIN condition that treats NULLs as equal in SQL.
Example:
SELECT * FROM table1 t1 JOIN table2 t2 ON (t1.col = t2.col OR (t1.col IS NULL AND t2.col IS NULL));
This condition matches rows where columns are equal or both NULL.
Click to reveal answer
What does an INNER JOIN do with rows where the join column is NULL?
AExcludes them because NULL does not equal anything
BConverts NULL to zero and joins
CIncludes them always
DIncludes them if both sides have NULL
✗ Incorrect
INNER JOIN excludes rows where the join condition is not true. Since NULL compared to anything is unknown (not true), those rows are excluded.
Which JOIN type can include rows with NULL in the join column from one table?
AINNER JOIN
BLEFT JOIN
CFULL JOIN
DCROSS JOIN
✗ Incorrect
LEFT JOIN includes all rows from the left table, even if the join condition fails (including NULLs).
How can you write a join condition to treat NULLs as equal?
AUse <code>t1.col = t2.col</code> only
BUse <code>t1.col IS NULL OR t2.col IS NULL</code>
CUse <code>t1.col = t2.col OR (t1.col IS NULL AND t2.col IS NULL)</code>
DUse <code>t1.col != t2.col</code>
✗ Incorrect
This condition explicitly matches rows where both columns are NULL, treating NULLs as equal.
What is the result of comparing NULL = NULL in SQL?
AUNKNOWN (treated as FALSE in JOIN)
BFALSE
CTRUE
DError
✗ Incorrect
NULL compared to NULL results in UNKNOWN, which is treated as FALSE in JOIN conditions.
Which of these is true about NULL in JOIN conditions?
ANULL is converted to zero automatically
BNULL matches NULL by default
CNULL matches empty string
DNULL never matches any value including NULL
✗ Incorrect
NULL never matches any value, including another NULL, unless explicitly handled.
Explain why NULL values cause rows to be excluded in INNER JOINs and how to include them.
Think about how SQL treats NULL in comparisons and how different JOIN types behave.
You got /5 concepts.
Describe how to write a JOIN condition that treats NULL values as equal and why this might be useful.
Consider how NULLs are normally excluded and how to override that.
You got /4 concepts.
Practice
(1/5)
1. What happens when you use an INNER JOIN on columns that contain NULL values in SQL?
easy
A. Rows with NULL in join columns are always included.
B. Rows with NULL in join columns are excluded from the result.
C. The query returns an error due to NULL values.
D. Rows with NULL are treated as equal and joined together.
Solution
Step 1: Understand how INNER JOIN works with = condition
When joining tables, SQL compares join columns using =. If a column has NULL, it means unknown, so comparison fails.
Step 2: Effect of NULL in join columns
Since NULL = NULL is not true, rows with NULL in join columns do not match and are excluded.
Final Answer:
Rows with NULL in join columns are excluded from the result. -> Option B
Quick Check:
NULL means unknown, so no match [OK]
Hint: Remember: NULL never equals NULL in joins [OK]
Common Mistakes:
Assuming NULL equals NULL in join conditions
Expecting NULL rows to appear in INNER JOIN results
Thinking NULL causes query errors in JOIN
2. Which of the following SQL JOIN syntaxes correctly includes rows with NULL values in the join column from the left table?
easy
A. SELECT * FROM A INNER JOIN B ON A.id = B.id;
B. SELECT * FROM A RIGHT JOIN B ON A.id = B.id;
C. SELECT * FROM A LEFT JOIN B ON A.id = B.id;
D. SELECT * FROM A FULL JOIN B ON A.id = B.id WHERE A.id IS NOT NULL;
Solution
Step 1: Identify JOIN types that keep left table rows
LEFT JOIN keeps all rows from the left table, including those with NULL in join columns.
Step 2: Check other options
INNER JOIN excludes unmatched rows; RIGHT JOIN keeps right table rows; FULL JOIN keeps all but filtering with WHERE A.id IS NOT NULL removes left table NULLs.
Final Answer:
SELECT * FROM A LEFT JOIN B ON A.id = B.id; -> Option C
Quick Check:
LEFT JOIN keeps left rows even if join column is NULL [OK]
Hint: Use LEFT JOIN to keep left table NULL rows [OK]
Common Mistakes:
Using INNER JOIN expecting NULL rows to appear
Filtering NULLs after FULL JOIN with WHERE clause
Confusing RIGHT JOIN with LEFT JOIN behavior
3. Given tables: Table A: id 1 2 NULL
Table B: id 2 NULL
What is the result of this query?
SELECT A.id, B.id FROM A INNER JOIN B ON A.id = B.id;
medium
A. (1, 2), (2, 2), (NULL, NULL)
B. (NULL, NULL)
C. (1, 2), (2, 2)
D. (2, 2)
Solution
Step 1: Understand INNER JOIN with NULLs
INNER JOIN matches rows where A.id = B.id. NULLs do not match anything, even NULL.
Step 2: Check matching rows
Only A.id = 2 matches B.id = 2. Rows with NULL do not match.
Final Answer:
(2, 2) -> Option D
Quick Check:
NULLs do not match, only 2 joins [OK]
Hint: NULLs never match in INNER JOIN conditions [OK]
Common Mistakes:
Including NULL = NULL as a match
Assuming all rows join regardless of NULL
Confusing INNER JOIN with OUTER JOIN behavior
4. You wrote this query:
SELECT * FROM A LEFT JOIN B ON A.id = B.id WHERE B.id IS NOT NULL;
But it returns no rows, even though you expect rows from A with NULL id. What is the likely problem?
medium
A. The WHERE B.id IS NOT NULL filters out all rows including those with NULL in A.id.
B. LEFT JOIN does not include rows with NULL in join columns.
C. You should use INNER JOIN instead of LEFT JOIN.
D. The join condition A.id = B.id causes a syntax error.
Solution
Step 1: Understand LEFT JOIN with WHERE filter
LEFT JOIN keeps all A rows, but WHERE B.id IS NOT NULL filters only rows where B.id is NOT NULL after join.
Step 2: Effect on rows with NULL in A.id
Rows with NULL in A.id do not match B.id, so B.id is NULL after the join. The WHERE B.id IS NOT NULL condition excludes these rows.
Final Answer:
The WHERE B.id IS NOT NULL filters out all rows including those with NULL in A.id. -> Option A
Quick Check:
WHERE filters after join, can exclude expected rows [OK]
Hint: Remember WHERE filters after JOIN, can exclude NULL rows [OK]
Common Mistakes:
Thinking LEFT JOIN excludes NULL join columns
Using INNER JOIN expecting NULL rows
Assuming join condition causes syntax error
5. You want to join tables A and B on id columns, but include rows where id is NULL in either table. Which query correctly returns all rows from both tables, matching on id including NULLs treated as equal?
hard
A.
SELECT * FROM A FULL JOIN B ON A.id = B.id OR (A.id IS NULL AND B.id IS NULL);
B.
SELECT * FROM A FULL JOIN B ON A.id = B.id;
C.
SELECT * FROM A INNER JOIN B ON A.id = B.id OR (A.id IS NULL AND B.id IS NULL);
D.
SELECT * FROM A LEFT JOIN B ON A.id = B.id WHERE A.id IS NOT NULL;
Solution
Step 1: Understand FULL JOIN and NULL behavior
FULL JOIN returns all rows from both tables, but A.id = B.id excludes NULL matches because NULL = NULL is false.
Step 2: Add explicit NULL check in join condition
Using OR (A.id IS NULL AND B.id IS NULL) treats NULLs as equal, including those rows in join results.
Step 3: Check other options
SELECT * FROM A FULL JOIN B ON A.id = B.id;
excludes NULL matches;
SELECT * FROM A INNER JOIN B ON A.id = B.id OR (A.id IS NULL AND B.id IS NULL);
uses INNER JOIN, excluding unmatched rows;
SELECT * FROM A LEFT JOIN B ON A.id = B.id WHERE A.id IS NOT NULL;
filters out NULLs.
Final Answer:
SELECT * FROM A FULL JOIN B ON A.id = B.id OR (A.id IS NULL AND B.id IS NULL); -> Option A
Quick Check:
Explicit NULL checks in JOIN condition include NULL matches [OK]
Hint: Add IS NULL checks in JOIN to match NULLs explicitly [OK]
Common Mistakes:
Assuming NULL = NULL matches automatically
Using INNER JOIN instead of FULL JOIN for all rows
Filtering NULLs unintentionally with WHERE clause
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.