Ответ
INNER JOIN возвращает только те строки из обеих таблиц, для которых выполняется условие соединения, заданное в ON.
Принцип работы: Результатом является декартово произведение строк таблиц, отфильтрованное по условию. Строки, не имеющие соответствия в другой таблице, исключаются из итогового набора.
Синтаксис:
SELECT
table1.column1,
table2.column2
FROM table1
INNER JOIN table2
ON table1.matching_column = table2.matching_column;
-- Ключевое слово INNER часто опускают:
-- JOIN table2 ON ...
Наглядный пример:
-- Таблица `orders`
-- id | customer_id | amount
-- 1 | 101 | 50
-- 2 | 102 | 30
-- 3 | 999 | 75 (клиента 999 нет в таблице customers)
-- Таблица `customers`
-- id | name
-- 101| Alice
-- 102| Bob
SELECT orders.id, customers.name, orders.amount
FROM orders
INNER JOIN customers ON orders.customer_id = customers.id;
| Результат: | id | name | amount |
|---|---|---|---|
| 1 | Alice | 50 | |
| 2 | Bob | 30 |
Ключевой момент: Заказ с id=3 не попал в результат, так как его customer_id=999 не найден в таблице customers. Порядок таблиц в JOIN (table1 JOIN table2) на результат не влияет.