0Pricing
SQL Academy · Урок

UNION, INTERSECT, EXCEPT

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

«UNION, INTERSECT, EXCEPT» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Обзор операций над множествами

Три оператора множеств объединяют результирующие наборы построчно:

  • UNION — строки из A ИЛИ B (без дубликатов)
  • INTERSECT — строки из A И B
  • EXCEPT — строки из A, но НЕ из B

UNION

Объединяет два результирующих набора, удаляя дубликаты:

SELECT email FROM users
UNION
SELECT email FROM newsletter_subscribers;

Совместимость столбцов

Оба запроса должны возвращать одинаковое количество столбцов совместимых типов:

-- OK:
SELECT email FROM users UNION SELECT email FROM customers;

-- ERROR — different column count:
SELECT email FROM users UNION SELECT email, name FROM customers;

INTERSECT

Строки, присутствующие в обоих запросах:

SELECT product_id FROM orders WHERE user_id = 1
INTERSECT
SELECT product_id FROM orders WHERE user_id = 2;
-- Products bought by BOTH users.

EXCEPT

Строки из первого запроса, отсутствующие во втором:

SELECT product_id FROM products
EXCEPT
SELECT product_id FROM order_items;
-- Products never ordered.

ORDER BY с операторами множеств

ORDER BY применяется ко всему объединённому результату. Поместите его в конце:

SELECT email FROM users
UNION
SELECT email FROM customers
ORDER BY email;

Операторы множеств и NULL

В операциях над множествами два значения NULL считаются равными: UNION удаляет один из них, а INTERSECT считает их совпадающими. (Это отличается от NULL = NULL в WHERE.)

Операторы множеств для подзапросов

Заключайте подзапросы в скобки для ясности и чтобы объединять их с LIMIT:

(SELECT id FROM users ORDER BY created_at DESC LIMIT 10)
UNION
(SELECT id FROM users ORDER BY total DESC LIMIT 10);

Приоритет операторов

INTERSECT имеет более высокий приоритет, чем UNION/EXCEPT. Используйте скобки:

SELECT id FROM a
UNION
SELECT id FROM b
INTERSECT
SELECT id FROM c;
-- means: a UNION (b INTERSECT c)

-- Use parens to force order:
(SELECT id FROM a UNION SELECT id FROM b) INTERSECT SELECT id FROM c;

Производительность

UNION сортирует данные для удаления дубликатов. INTERSECT и EXCEPT выполняют похожую работу. Для больших наборов предпочитайте конструкции с JOIN/EXISTS и используйте операции над множествами только тогда, когда их смысл однозначно подходит.

Стандартный SQL и особенности СУБД

Все три оператора есть в PostgreSQL. MySQL добавил INTERSECT и EXCEPT только в версии 8.0.31; в более старых версиях их имитируют с помощью JOIN/NOT IN.

Итоги

Операторы множеств выражают операции ИЛИ/И/MINUS над строками.

  • UNION — объединение и удаление дубликатов
  • INTERSECT — общие строки
  • EXCEPT — A минус B

Быстрая проверка

Какой оператор множеств возвращает «строки из A, которых НЕТ в B»?

Часто задаваемые вопросы

Урок «UNION, INTERSECT, EXCEPT» бесплатный?

Да — полный текст урока «UNION, INTERSECT, EXCEPT» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «UNION, INTERSECT, EXCEPT»?

Объединяйте совместимые наборы результатов с помощью UNION, находите общие строки с INTERSECT и разницу с EXCEPT Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «UNION, INTERSECT, EXCEPT»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. UNION, INTERSECT, EXCEPT
  2. UNION ALL и UNION (стоимость удаления дубликатов)
  3. Выражения CASE и сводные запросы
  4. Шаблоны перекрёстных таблиц (PostgreSQL crosstab())
← Назад к SQL Academy