Как работает оператор INNER JOIN в SQL?

«Как работает оператор INNER JOIN в SQL?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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) на результат не влияет.