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

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

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

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

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

products

idproduct_nameprice
10928473Стиральная машина Electrolux28499.99
20483739Беспроводные наушники JBL с микрофоном4999.0
73648393Игровая мышь Acer1099.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

idproduct_nameprice
81176602Весы кухонные ERGOLUX799.0
33801167Ноутбук Acer53849.0
16673098Фен Vitek799.0
66379812Ноутбук Dell90299.0
17728904Компьютерная мышь Logitech650.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

idproduct_nameprice
17728904Компьютерная мышь Logitech650.0
22657781Коврик для мыши черный440.0
16673098Фен Vitek799.0
81176602Весы кухонные ERGOLUX799.0
73648393Игровая мышь Acer1099.0
17728904Компьютерная мышь Logitech650.0

Таблица на DB Fiddle

Рекомендуемые программы

Завершено

0 / 6