← Все вопросы

Чем UNION отличается от JOIN?

Задан 14 месяцев назад811 просмотров2 ответа
12

Оба вроде «соединяют» таблицы, но как-то по-разному. Когда нужен UNION, а когда JOIN?

2 ответа

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

Они соединяют в разных направлениях:

  • JOIN соединяет таблицы по горизонтали — добавляет столбцы. Из users и orders получаешь одну широкую строку «имя + данные заказа».
  • UNION склеивает результаты по вертикали — ставит строки одного запроса под строки другого. Столбцы должны совпадать по количеству и типам.
-- JOIN: больше столбцов
SELECT u.name, o.amount
FROM users u JOIN orders o ON o.user_id = u.id;

-- UNION: больше строк (например, активные + архивные заказы из двух таблиц)
SELECT id, amount FROM orders
UNION
SELECT id, amount FROM orders_archive;

Ещё нюанс: UNION убирает дубликаты строк, а UNION ALL оставляет всё как есть (и работает быстрее).

Олег Камаров «горизонтально vs вертикально» — идеальная аналогия 👍 · 14 месяцев назад
9

JOIN добавляет столбцы (вширь), UNION добавляет строки (ввысь).

Ваш ответ

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