Sobes.tech
Back to questions
Junior — Middle
79

Можете объяснить различия между внутренним соединением и левым соединением в SQL?

Answer from AI

sobes.tech AI

Внутреннее соединение (INNER JOIN) возвращает только те строки, которые имеют совпадения в обеих таблицах по условию соединения. Если в одной из таблиц нет соответствующей записи, то такая строка не попадёт в результат.

Левое соединение (LEFT JOIN) возвращает все строки из левой таблицы и соответствующие строки из правой таблицы. Если для строки из левой таблицы нет совпадения в правой, то в результат попадут значения из левой таблицы, а для правой — NULL.

Пример:

SELECT a.id, a.name, b.order_id
FROM customers a
INNER JOIN orders b ON a.id = b.customer_id;

Вернёт только клиентов, у которых есть заказы.

SELECT a.id, a.name, b.order_id
FROM customers a
LEFT JOIN orders b ON a.id = b.customer_id;

Вернёт всех клиентов, включая тех, у кого нет заказов (в этом случае order_id будет NULL).