Выражение UNION

Выражение UNION добавляет результаты одного запроса к результатам другого. При этом дублирующиеся строки убираются из результата, если только не добавлен оператор ALL.

Чтобы можно было вычислить объединение результатов двух запросов, эти запросы должны быть совместимыми. Это означает, что они должны иметь одинаковое число столбцов и соответствующие столбцы должны быть совместимых типов.

Синтаксис

SELECT ...
UNION [ALL]
SELECT ...
[UNION [ALL]
SELECT ...
...
];

Примеры

  • Выведем список всех стран, которые встречаются в столбцах 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  |
    +---------+