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;Связанные термины
Анекдоты по теме
— Зачем нужен EXPLAIN (BUFFERS)? — Показывает, сколько данных прочитано из кэша и с диска. — Зачем это знать? — Если всё из кэша — ок. Если много с диска — нужно больше shared_buffers или индексы.
— Что такое 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;
— Что такое VIEW? — Это сохранённый SELECT. Как псевдоним для запроса. — Он хранит данные? — Нет. Каждый раз выполняет запрос заново. — А MATERIALIZED VIEW? — Хранит результат. Как кэш. Нужно обновлять вручную.