Ответ
Оператор UNION используется для объединения результирующих наборов двух или более SELECT-запросов в один.
Ключевые правила:
- Количество и порядок столбцов во всех объединяемых запросах должны совпадать.
- Типы данных в соответствующих столбцах должны быть совместимы.
UNIONавтоматически удаляет дублирующиеся строки из финального результата.UNION ALLвыполняет то же объединение, но сохраняет все дубликаты, работая быстрее, так как не требует проверки на уникальность.
Пример: Объединение списков имён из двух таблиц.
-- Получить уникальные имена всех сотрудников и клиентов
SELECT first_name FROM employees
UNION
SELECT customer_name FROM customers
ORDER BY first_name;
UNION vs JOIN:
JOINсоединяет таблицы по горизонтали (добавляет столбцы) на основе условия связи.UNIONобъединяет результаты по вертикали (добавляет строки), складывая их друг под другом.
Ответ 18+ 🔞
Да, ну вот, смотри, оператор UNION, это как если бы ты взял две кучки бумажек с записями и просто свалил их в одну коробку, одну поверх другой. По-простому.
Главные заморочки, без которых нихуя не получится:
- Сколько столбцов ты выбрал в первом запросе — ровно столько же и во втором, и в третьем. И в том же порядке, блядь. Нельзя сначала имя, потом фамилию, а во втором запросе — зарплату, а потом должность. Порядок — святое, ёпта.
- Типы данных в столбцах, которые друг на друга ложатся, должны хоть как-то друг друга понимать. Текст к тексту, цифры к цифрам. А то получится ерунда на постном масле.
- Обычный
UNION— он такой чистюля, блядь. Он смотрит на все строки и говорит: «О, два Ивана? Нахуй один лишний!» — и выкидывает дубликаты. - А вот
UNION ALL— это пофигист. Он тупо сгребает всё в кучу и не парится. «Два Ивана? И хуй с ними, пусть оба будут». И работает он, сука, быстрее, потому что не тратит время на эту ебучую проверку.
Пример, чтобы совсем понятно стало: Нужно собрать всех людей по именам, и сотрудников, и клиентов.
-- Берём имена отсюда...
SELECT first_name FROM employees
UNION -- ...потом добавляем имена отсюда, сверху. И выкидываем повторы.
SELECT customer_name FROM customers
ORDER BY first_name; -- И в конце всё это дело по алфавиту сортируем.
Чем UNION не JOIN:
JOIN— это когда ты две таблицы рядом кладёшь и сшиваешь их нитками (условием связи). Получается шире.UNION— это когда ты берёшь результаты и ставишь их друг на дружку, стопкой. Получается выше. Совсем разные операции, ядрёна вошь!