Menu
Coddy logo textTech

UNION против UNION ALL

Часть раздела Продвинутый уровень путешествия по SQL на Coddy. Урок 16 из 27.

Вы познакомились с UNION в разделе Основы: он объединяет два набора результатов, располагая один поверх другого. По умолчанию он также удаляет дубликаты, что требует дополнительной сортировки.

SELECT name FROM authors
UNION
SELECT name FROM editors

UNION ALL выполняет то же самое объединение, но сохраняет дубликаты. Это быстрее и почти всегда именно то, что вам нужно, когда вы знаете, что две стороны не могут вернуть одну и ту же строку, или когда вы действительно хотите посчитать каждое вхождение.

SELECT name FROM authors
UNION ALL
SELECT name FROM editors

Обе стороны должны возвращать одинаковое количество столбцов в одинаковом порядке, с совместимыми типами.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • online_orders: order_no, amount
  • retail_orders: ticket_no, total

В этих двух таблицах хранятся заказы из разных каналов с разными именами столбцов. Верните единый список всех заказов со столбцами:

  • channel: 'online' или 'retail'
  • order_id: order_no для online, ticket_no для retail
  • amount: общая сумма заказа (из amount или total)

Сохраните каждую строку (без удаления дубликатов). Отсортируйте по amount в порядке убывания.

Попробуйте сами

-- два SELECT, выровненные по одним и тем же 3 столбцам, объединённые с помощью UNION ALL
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Продвинутый уровень

Потренируйтесь самостоятельно: Песочница SQL