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

Задание

Легко

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

  • <strong>online_orders</strong>: <strong>order_no</strong>, <strong>amount</strong>
  • <strong>retail_orders</strong>: <strong>ticket_no</strong>, <strong>total</strong>

Эти две таблицы отслеживают заказы из разных каналов с разными именами столбцов. Верните один объединенный список всех заказов со следующими столбцами:

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

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

Шпаргалка

UNION объединяет два набора результатов и удаляет дубликаты (медленнее). UNION ALL объединяет и сохраняет дубликаты (быстрее):

SELECT name FROM authors
UNION ALL
SELECT name FROM editors

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

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

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

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

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