UNION против UNION ALL
Часть раздела Продвинутый уровень путешествия по SQL на Coddy. Урок 16 из 27.
Вы познакомились с UNION в разделе Основы: он объединяет два набора результатов, располагая один поверх другого. По умолчанию он также удаляет дубликаты, что требует дополнительной сортировки.
SELECT name FROM authors
UNION
SELECT name FROM editorsUNION ALL выполняет то же самое объединение, но сохраняет дубликаты. Это быстрее и почти всегда именно то, что вам нужно, когда вы знаете, что две стороны не могут вернуть одну и ту же строку, или когда вы действительно хотите посчитать каждое вхождение.
SELECT name FROM authors
UNION ALL
SELECT name FROM editorsОбе стороны должны возвращать одинаковое количество столбцов в одинаковом порядке, с совместимыми типами.
Задание
ЛегкоДоступные таблицы и столбцы:
online_orders:order_no,amountretail_orders:ticket_no,total
В этих двух таблицах хранятся заказы из разных каналов с разными именами столбцов. Верните единый список всех заказов со столбцами:
channel:'online'или'retail'order_id:order_noдля online,ticket_noдля retailamount: общая сумма заказа (изamountилиtotal)
Сохраните каждую строку (без удаления дубликатов). Отсортируйте по amount в порядке убывания.
Попробуйте сами
-- два SELECT, выровненные по одним и тем же 3 столбцам, объединённые с помощью UNION ALL
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Продвинутый уровень
Потренируйтесь самостоятельно: Песочница SQL