JOIN-ы в SQL: INNER, LEFT, RIGHT, FULL — разбор

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

sqljoininner join

JOIN в SQL нужен, чтобы объединять данные из нескольких таблиц по общему полю. Это одна из базовых тем для аналитиков, backend-разработчиков и всех, кто работает с БД.

Представим 2 таблицы:

users

  • id
  • name

orders

  • id
  • user_id
  • product

Данные:

users

  • 1, Анна
  • 2, Иван
  • 3, Ольга

orders

  • 101, 1, Ноутбук
  • 102, 1, Мышь
  • 103, 2, Клавиатура

1. INNER JOIN

Возвращает только те строки, где совпадение есть в обеих таблицах.

SELECT users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;

Результат:

  • Анна — Ноутбук
  • Анна — Мышь
  • Иван — Клавиатура

👉 Ольга не попадёт в результат, потому что у неё нет заказов.

2. LEFT JOIN

Возвращает все строки из левой таблицы и совпадения из правой. Если совпадений нет — будут NULL.

SELECT users.name, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

Результат:

  • Анна — Ноутбук
  • Анна — Мышь
  • Иван — Клавиатура
  • Ольга — NULL

👉 LEFT JOIN часто используют, когда нужно найти записи “без связей”: пользователей без заказов, товары без продаж, сотрудников без задач.

Пример:

SELECT users.name
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE orders.id IS NULL;

3. RIGHT JOIN

Работает зеркально: возвращает все строки из правой таблицы и совпадения из левой.

SELECT users.name, orders.product
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;

В нашем примере результат будет как у INNER JOIN, потому что у всех заказов есть пользователь.

⚠️ На практике RIGHT JOIN используют реже. Обычно запрос переписывают через LEFT JOIN для лучшей читаемости.

4. FULL JOIN

Возвращает все строки из обеих таблиц: и совпавшие, и несовпавшие.

SELECT users.name, orders.product
FROM users
FULL JOIN orders ON users.id = orders.user_id;

Если бы в orders был заказ с user_id, которого нет в users, он тоже попал бы в результат.

Как быстро запомнить

  • INNER — только пересечение
  • LEFT — всё из левой + совпадения справа
  • RIGHT — всё из правой + совпадения слева
  • FULL — всё из обеих таблиц

Важный нюанс ⚙️

Ошибка новичков — фильтровать LEFT JOIN через WHERE по правой таблице и случайно превращать его в INNER JOIN.

Пример:

SELECT users.name, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE orders.product = 'Ноутбук';

Здесь строки с NULL отфильтруются. Если нужно сохранить логику LEFT JOIN, условие лучше переносить в ON.

Итог

JOIN-ы — основа работы с реляционными БД. Если понимать разницу между INNER, LEFT, RIGHT и FULL, можно уверенно писать отчёты, собирать витрины данных и разбирать сложные запросы 📊

👀 Ниже стоит посмотреть подборку каналов про IT — там много полезного по SQL, backend, аналитике и разработке.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же