HuntExams Academy logo
SQL ยท Chapter 17 of 42

LEFT JOIN

LEFT JOIN returns ALL rows from the left table, plus matching rows from the right. Where no match exists, right-side columns are NULL.

Use it to answer 'which of X have no Y' with `WHERE right.id IS NULL`.

Anti-join pattern

LEFT JOIN + WHERE right.pk IS NULL finds rows on the left with no match โ€” perfect for 'users who never ordered'.

Careful with WHERE

Filtering right-side columns in WHERE turns a LEFT JOIN back into an INNER JOIN. Put right-side filters in the ON clause instead.

Example 1 (sql)
SELECT u.name, o.id
FROM users u
LEFT JOIN orders o ON o.user_id = u.id;
Output
every user; order id or NULL

Keeps users without orders.

Example 2 (sql)
SELECT u.name
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE o.id IS NULL;
Output
users with zero orders

Anti-join.

Key points

  • Left table always kept.
  • NULLs fill in missing right rows.
  • `WHERE right IS NULL` = anti-join.
  • Filter right table in the ON clause to preserve LEFT semantics.
๐Ÿ’ก Note: LEFT OUTER JOIN and LEFT JOIN are the same thing โ€” the OUTER keyword is optional.

๐Ÿ“ Quick Quiz

1. LEFT JOIN keeps rows from:

2. Users without orders can be found with LEFT JOIN and:

3. LEFT JOIN and LEFT OUTER JOIN are: