Выражение 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 | +---------+