← Все вопросы
Чем UNION отличается от JOIN?
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 добавляет строки (ввысь).
Ваш ответ
Войдите, чтобы ответить на вопрос.