Собесов

Что верно про UNION в SQL?

SQLМножественные операцииЛёгкаяJunior

Условие

Что из перечисленного верно про UNION?

  • Сохраняет порядок строк результата.
  • Удаляет дубликаты строк.
  • Требует совпадения имён столбцов.
  • Возвращает все строки, включая дубликаты.

Выбери один из четырёх вариантов ответа.

Решение

Правильный ответ — Удаляет дубликаты строк.

Свойства UNION

Свойство UNION UNION ALL
Удаляет дубликаты Да Нет
Сохраняет порядок Нет (нужен ORDER BY) Нет
Требует совпадения имён столбцов Нет (важны типы и количество) Нет
Производительность Медленнее (нужна сортировка для дедупликации) Быстрее

Разбор вариантов

  • «Сохраняет порядок строк результата» — неверно. Без ORDER BY порядок строк после UNION не определён. СУБД может выдать строки в любом порядке (часто — в порядке выполнения сортировки для дедупа).
  • «Удаляет дубликаты строк»верно. UNION неявно делает DISTINCT по всем колонкам.
  • «Требует совпадения имён столбцов» — неверно. Имена берутся из первого SELECT-а; во втором имена игнорируются. Важно совпадение количества столбцов и совместимости типов.
  • «Возвращает все строки, включая дубликаты» — неверно для UNION. Это поведение UNION ALL.

Пример

SELECT 1 AS x UNION SELECT 1;       -- 1 строка: {1}
SELECT 1 AS x UNION ALL SELECT 1;   -- 2 строки: {1, 1}
 
-- Имена столбцов берутся из первого SELECT
SELECT 1 AS first_col UNION SELECT 2 AS second_col;
-- Результат: колонка называется first_col

Подводные камни

  1. UNION дороже UNION ALL. Если знаете, что дубликатов нет (или они неважны), используйте UNION ALL — экономия на сортировке.
  2. ORDER BY после UNION действует на весь результат. Внутри одного из SELECT-ов он бессмыслен (в большинстве СУБД синтаксически запрещён).
  3. Совместимость типов, а не строгое равенство. INTEGER + BIGINT — окей. INTEGER + TEXT — почти всегда ошибка (в PostgreSQL — ошибка типа).

Эталонный ответ

Удаляет дубликаты строкUNION неявно применяет дедупликацию по всем столбцам результата.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти