Чем отличаются UNION и JOIN? SQL-операторы для объединения и связывания данных таблиц UNION: соединяет строки результатов нескольких таблиц или запросов в единый набор, располагая их последовательно Для UNION необходимо одинаковое количество столбцов и совместимые типы данных Обычный UNION убирает дубликаты, а UNION ALL сохраняет все строки JOIN: связывает таблицы по общим столбцам и дополняет строки колонками из другой таблицы Варианты JOIN — INNER, LEFT, RIGHT и FULL — определяют состав строк результата UNION выбирают для объединения наборов с одинаковой структурой, а JOIN — для сопоставления связанных записей из разных таблиц
В чём разница между UNION и JOIN в SQL?
Чем отличаются UNION и JOIN? SQL-операторы для объединения и связывания данных таблиц UNION: соединяет строки результатов нескольких таблиц или запросов в единый набор, располагая их последовательно Для UNION…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Чем отличаются UNION и JOIN?
- SQL-операторы для объединения и связывания данных таблиц
- UNION: соединяет строки результатов нескольких таблиц или запросов в единый набор, располагая их последовательно
- Для UNION необходимо одинаковое количество столбцов и совместимые типы данных
- Обычный UNION убирает дубликаты, а UNION ALL сохраняет все строки
- JOIN: связывает таблицы по общим столбцам и дополняет строки колонками из другой таблицы
- Варианты JOIN — INNER, LEFT, RIGHT и FULL — определяют состав строк результата
- UNION выбирают для объединения наборов с одинаковой структурой, а JOIN — для сопоставления связанных записей из разных таблиц
Подробный ответ
Основной ответ
UNION и JOIN решают разные задачи объединения данных в SQL. UNION складывает результаты двух или более запросов в один набор строк. JOIN, напротив, соединяет связанные таблицы по условию и добавляет к строкам столбцы из другой таблицы.
Ключевые моменты
- UNION работает по вертикали: строки одной выборки добавляются к строкам другой. При этом число столбцов и их типы должны совпадать. Оператор по умолчанию удаляет дубликаты, тогда как UNION ALL возвращает все строки.
- JOIN выполняет горизонтальное объединение: к строкам одной таблицы присоединяются столбцы другой по условию связи, например по ключу. Типы INNER, LEFT, RIGHT и FULL определяют, какие строки войдут в итоговую выборку.
- Назначение и использование у операторов различаются: UNION подходит для объединения однотипных данных из разных источников, например списков клиентов разных регионов. JOIN применяют, когда нужно "склеить" сведения из связанных таблиц — например данные заказа и информацию о клиенте.
Практический контекст
В прикладных системах, включая PostgreSQL 14+, JOIN часто используют для получения общей информации о пользователях и их заказах. UNION применяют в отчётах, где требуется объединить данные разных периодов или категорий при совпадающей структуре. Trade-off заключается в том, что JOIN может работать медленнее из-за сопоставления данных, зато даёт более подробный результат; UNION обычно быстрее, но только расширяет набор строк.