В PostgreSQL, как и в других СУБД, часто возникает задача объединения результатов нескольких запросов. Для этого используются операторы
UNION, UNION ALL, EXCEPT.Рассмотрим, как они работают:
🔻UNION
Объединяет результирующие наборы двух или более запросов, удаляя дубликаты.
Пример:
SELECT * FROM employees WHERE department = 'IT';
UNION
SELECT * FROM employees WHERE department = 'Marketing';
Этот запрос выведет всех сотрудников из отделов IT и Marketing без повторений.
🔻UNION ALL
Объединяет результирующие наборы двух или более запросов, оставляя дубликаты.
Пример:
SELECT * FROM employees WHERE department = 'IT';
UNION ALL
SELECT * FROM employees WHERE department = 'IT';
В этом случае, если в отделе IT есть два сотрудника с одинаковыми данными, то они будут выведены дважды.
🔻EXCEPT
Вычитает из результирующего набора первого запроса все строки, которые присутствуют во втором запросе.
Пример:
SELECT * FROM employees WHERE department = 'IT';
EXCEPT
SELECT * FROM employees WHERE salary > 100000;
Запрос выведет всех сотрудников IT-отдела, кроме тех, кто получает зарплату больше 100000.
Ключевое отличие
UNION, UNION ALL, EXCEPT от JOIN в том, что первые работают с результирующими наборами запросов, в то время как JOIN соединяет данные из двух или более таблиц по общему столбцу. Грамотное использование этих операторов поможет вам эффективно работать с данными и решать сложные задачи👍🏻