SQL UNIONОператоры


Оператор SQL UNION объединяет результаты двух или более инструкций SELECT.

Оператор UNION используется для объединения наборов результатов двух или более инструкций SELECT. Он позволяет выбирать данные из нескольких таблиц и объединять наборы результатов в один набор результатов. При использовании UNION каждая инструкция SELECT должна иметь одинаковое количество столбцов, а типы данных соответствующих столбцов должны быть схожими.

Синтаксис SQL UNION

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

Оператор UNION по умолчанию удаляет повторяющиеся записи. Если нужно сохранить все повторяющиеся записи, можно использовать оператор UNION ALL.

Синтаксис SQL UNION ALL

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;

Примечание:Имена столбцов в результирующем наборе UNION всегда совпадают с именами столбцов в первой инструкции SELECT в UNION.


Демонстрационная база данных

В этом руководстве мы будем использовать образец базы данных EXAMPLE.

Ниже приведены данные, выбранные из таблицы "Websites":

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | Example      | http://www.example.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

Ниже приведены данные из приложения "apps":

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘宝 APP | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+
3 rows in set (0.00 sec)


Пример SQL UNION

Следующая инструкция SQL выбирает всеуникальныезначения country (только уникальные значения):

Пример

SELECT country FROM Websites
ОБЪЕДИНЕНИЕ
SELECT country FROM apps
ORDER BY country;

Выполнение приведённого выше SQL выводит следующие результаты:

Примечание:UNION нельзя использовать для перечисления всех стран из обеих таблиц. Если некоторые веб-сайты и приложения происходят из одной и той же страны, каждая страна будет указана только один раз. UNION выбирает только различные значения. Используйте UNION ALL, чтобы выбрать повторяющиеся значения!


Пример SQL UNION ALL

Следующий SQL-запрос использует UNION ALL для выбора из таблиц "Websites" и "apps"всестраны (включая повторяющиеся значения):

Пример

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;

Выполнение приведённого выше SQL выводит следующие результаты:



SQL UNION ALL с WHERE

Следующий SQL-запрос использует UNION ALL для выбора из таблиц "Websites" и "apps"вседанные для Китая (CN) (включая повторяющиеся значения):

Пример

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;

Выполнение приведённого выше SQL выводит следующие результаты:

Другие расширения