UNION / UNION ALL
Объединяет результаты двух SELECT в один. UNION убирает дубли, UNION ALL оставляет все строки.
SELECT col FROM t1 UNION [ALL] SELECT col FROM t2;
Объяснение
Пример
-- Объединить активных и VIP пользователей без дублей SELECT id, name FROM active_users UNION SELECT id, name FROM vip_users ORDER BY name;
Связанные термины
Анекдоты по теме
Оптимизатор запросов говорит медленному подзапросу: — Ты почему тормозишь? — Я каждую строчку с каждой сравниваю через IN. — Используй EXISTS. — А я знаю, что я существую? — Вот поэтому ты и тормоз.
— Что такое lateral join? — Это когда правая часть JOIN может ссылаться на строки из левой. — Зачем? — Классика: для каждого пользователя — его последние 3 заказа. SELECT u.*, o.* FROM users u, LATERAL (SELECT * FROM orders WHERE user_id = u.id ORDER BY date DESC LIMIT 3) o;
— Почему HASH JOIN быстрее NESTED LOOP при больших таблицах? — NESTED LOOP: для каждой строки левой таблицы ищет совпадение в правой. O(n*m). — HASH JOIN: строит хэш-таблицу из меньшей таблицы, потом сканирует большую. O(n+m). — Но при маленьких таблицах? — NESTED LOOP эффективнее из-за меньших накладных расходов.