SQL UNION и UNION ALL: объединить результаты
UNION ALL складывает строки двух запросов и сохраняет дубликаты; UNION дополнительно удаляет дубли, что требует сортировки или другого шага обработки. Если уникальность не нужна, выбирайте UNION ALL — он обычно дешевле.
Объединить два набора без удаления повторов
SELECT 'web' AS source, 10 AS user_id
UNION ALL
SELECT 'mobile' AS source, 10 AS user_id;Результат содержит обе строки, хотя user_id совпадает.
Удалить полностью одинаковые строки
SELECT user_id FROM (VALUES (10), (20)) AS web(user_id)
UNION
SELECT user_id FROM (VALUES (10), (30)) AS mobile(user_id);Результат содержит 10, 20, 30; повторяющаяся строка 10 появляется один раз.
Оператор | Дубликаты | Когда использовать |
|---|---|---|
| Сохраняет | Нужны все строки |
| Удаляет совпадающие строки целиком | Нужен уникальный итог |
У запросов должно совпадать количество столбцов и совместимость типов в соответствующих позициях. Имена результирующих столбцов берутся из первого SELECT.
Удаляет ли UNION одинаковые значения только в одном поле?
Он удаляет полностью одинаковые строки результата. Если нужны уникальные пользователи, выберите только user_id или отдельно сгруппируйте результат.