Объединение результатов нескольких подзапросов с удалением дубликатов.
Поведение идентично последовательному исполнению UNION ALL
и SELECT DISTINCT *
.
См. UNION ALL для информации о деталях поведения.
SELECT key FROM T1
UNION
SELECT key FROM T2 -- возвращает таблицу различных ключей, лежащих хотя бы в одной из исходных таблиц
Конкатенация результатов нескольких SELECT
(или подзапросов).
Поддерживаются два режима выполнения UNION ALL
– по именам колонок (режим по умолчанию) и по позициям колонок (соответствует стандарту ANSI SQL и включается через соответствующую PRAGMA).
В режиме "по именам" результирующая схема данных выводится по следующим правилам:
NULL
);Порядок выходных колонок в этом режиме выводится как наибольший общий префикс порядка входов, после чего следуют все остальные колонки в алфавитном порядке. Если наибольший общий префикс пуст (в том числе и из-за отсутствия порядка на одном из входов), то порядок выхода не определен.
В режиме "по позициям" результирующая схема данных выводится по следующим правилам:
Порядок выходных колонок в этом режиме совпадает с порядком колонок первого входа.
SELECT 1 AS x
UNION ALL
SELECT 2 AS y
UNION ALL
SELECT 3 AS z;
В результате выполнения данного запроса в режиме по-умолчанию будет сформирована выборка с тремя колонками x, y, и z. При включенной PRAGMA PositionalUnionAll;
в выборке будет одна колонка x.
PRAGMA PositionalUnionAll;
SELECT 1 AS x, 2 as y
UNION ALL
SELECT * FROM AS_TABLE([<|x:3, y:4|>]); -- ошибка: порядок колонок в AS_TABLE не определен
SELECT * FROM T1
UNION ALL
(SELECT * FROM T2 ORDER BY key LIMIT 100); -- при отсутствии скобок ORDER BY/LIMIT применится к результату всего UNION ALL