Выражение UNION
Выражение UNION добавляет результаты одного запроса к результатам другого. При этом дублирующиеся строки убираются из результата, если только не добавлен оператор ALL.
Чтобы можно было вычислить объединение результатов двух запросов, эти запросы должны быть совместимыми. Это означает, что они должны иметь одинаковое число колонок и соответствующие колонки должны быть совместимых типов.
Примеры
-
Выведем список всех стран, которые встречаются в колонках
countryв двух таблицах — столиц и количества населения:CREATE TABLE capitals (country VARCHAR, capital VARCHAR); CREATE TABLE population (country VARCHAR, population_mil BIGINT); INSERT INTO capitals VALUES ('Russia', 'Moscow'), ('Italy', 'Rome'), ('Spain', 'Madrid'), ('France', 'Paris'); INSERT INTO population VALUES ('Russia', 143), ('Spain', 48), ('Brazil', 211); SELECT country FROM capitals UNION SELECT country FROM population;+---------+ | country | +---------+ | Russia | +---------+ | Italy | +---------+ | France | +---------+ | Spain | +---------+ | Brazil | +---------+ -
Теперь для тех же двух таблиц выведем список стран, которые встречаются в колонках
country, но без сокращения повторяющихся вхождений. Для этого используем операторALL:SELECT country FROM capitals UNION ALL SELECT country FROM population;+---------+ | country | +---------+ | Russia | +---------+ | Italy | +---------+ | Spain | +---------+ | France | +---------+ | Russia | +---------+ | Spain | +---------+ | Brazil | +---------+