← Все вопросы

Что такое JOIN и чем INNER отличается от LEFT простыми словами?

Задан 1 месяц назад1.5к просмотров3 ответа
22

Только начал учить SQL. Есть таблицы users и orders. Что вообще делает JOIN и в чём разница между INNER JOIN и LEFT JOIN? Когда какой брать?

3 ответа

27
✓ Принятый ответ — помог автору

JOIN склеивает строки двух таблиц по условию (обычно по совпадению ключа). У тебя users.id и orders.user_id — по ним и соединяем.

SELECT u.name, o.id AS order_id
FROM users u
INNER JOIN orders o ON o.user_id = u.id;

Разница:

  • INNER JOIN — оставит только тех пользователей, у кого ЕСТЬ заказы. Без заказов — выпадают.
  • LEFT JOIN — оставит ВСЕХ пользователей из левой таблицы (users), а у кого заказов нет — в колонках заказа будет NULL.

Типичный кейс для LEFT: «покажи всех юзеров и сколько у них заказов, включая тех, у кого ноль». С INNER ты таких просто не увидишь.

Тимур Осипов а как найти юзеров вообще без заказов? — LEFT JOIN + WHERE o.id IS NULL 👍 · 1 месяц назад
11

INNER — пересечение, LEFT — всё слева плюс совпадения справа.

6

Представь два круга. INNER — серединка где пересекаются. LEFT — весь левый круг целиком. Мне так на картинке зашло.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект