Объединение подзапросов UNION
или UNION ALL
позволяет объединить результаты нескольких подзапросов в один результирующий набор данных.
Рассмотрим таблицу с продуктами
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)
В результате выполнения получится такая таблица:
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 |
View on 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 '%мышь%')
Результат будет таким
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 |
View on DB Fiddle
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.