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