Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

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

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

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

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

Table 1. 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)

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

Table 2. 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

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 '%мышь%')

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

Table 3. 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

View on DB Fiddle


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

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

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

Об обучении на Хекслете

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

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 5 025 ₽ в месяц
новый
Сбор, анализ и интерпретация данных
9 месяцев
с нуля
Старт 2 мая

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу