Return only rows that match on both sides.

Section: Join types at a glance

INNER JOIN

sql
sql
SELECT c.customer_id, c.name, o.order_id
FROM customers c
INNER JOIN orders o ON o.customer_id = c.customer_id;
Explanation

Use `INNER JOIN` when you only want records with matching keys in both tables.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing Join types at a glance
LEFT JOIN
Keep all rows from the left table and match rows from the right when available.
OpenIn sheetsqlsame section
RIGHT JOIN
Keep all rows from the right table and match rows from the left when available.
OpenIn sheetsqlsame section
FULL OUTER JOIN
Keep all rows from both tables and match where possible.
OpenIn sheetsqlsame section
CROSS JOIN
Produce the Cartesian product of two tables.
OpenIn sheetsqlsame section
Join on stable keys
Prefer primary keys and foreign keys over names or free-form text.
Put right-side filters in ON when preserving outer rows
A `WHERE` clause can accidentally turn a left join into an inner join.