Зарегистрируйтесь, чтобы продолжить обучение

Объединение подзапросов Продвинутые SQL-запросы

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

Объединение подзапросов

Рассмотрим таблицу с продуктами

products

id product_name price
10928473 Стиральная машина Electrolux 28499.99
20483739 Беспроводные наушники JBL с микрофоном 4999.0
73648393 Игровая мышь Acer 1099.0
... ... ...

Оператор UNION объединяет результаты нескольких подзапросов и удаляет дубликаты строк из результирующего набора.

Например, используя оператор UNION, можно объединить результаты двух подзапросов, которые выбирают продукты с ценой выше 50000 и продукты с ценой ниже 1000:

(SELECT
    id,
    product_name,
    price
FROM products WHERE price > 50000)
UNION
(SELECT
    id,
    product_name,
    price
FROM products WHERE price < 1000)

В результате выполнения получится такая таблица:

union_products

id product_name price
81176602 Весы кухонные ERGOLUX 799.0
33801167 Ноутбук Acer 53849.0
16673098 Фен Vitek 799.0
66379812 Ноутбук Dell 90299.0
17728904 Компьютерная мышь Logitech 650.0
22657781 Коврик для мыши черный 440.0

Таблица на DB Fiddle

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

Например, мы можем использовать оператор UNION ALL, чтобы объединить результаты двух подзапросов, которые выбирают продукты с ценой ниже 1000 и компьютерные мыши, сохраняя все строки:

(SELECT
    id,
    product_name,
    price
FROM products WHERE price < 1000)
UNION ALL
(SELECT
    id,
    product_name,
    price
FROM products WHERE product_name LIKE '%мышь%')

Результат будет таким

union_products

id product_name price
17728904 Компьютерная мышь Logitech 650.0
22657781 Коврик для мыши черный 440.0
16673098 Фен Vitek 799.0
81176602 Весы кухонные ERGOLUX 799.0
73648393 Игровая мышь Acer 1099.0
17728904 Компьютерная мышь Logitech 650.0

Таблица на DB Fiddle


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff