English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Оператор UNION MySQL

В этом руководстве мы представляем синтаксис и примеры оператора MySQL UNION.

Оператор MySQL UNION используется для объединения результатов двух и более SELECT-запросов в один набор результатов. Множественные SELECT-запросы удаляют дублирующиеся данные.

Синтаксис

Синтаксис оператора MySQL UNION:

SELECT выражение1, выражение2, ... выражение_n
FROM таблицы
[WHERE условия]
UNION [ALL | DISTINCT]
SELECT выражение1, выражение2, ... выражение_n
FROM таблицы
[WHERE условия];

Параметры

  • выражение1, expression2, ... expression_n: столбцы для поиска.

  • таблицы: Таблица данных для поиска.

  • WHERE условия: Опция, условия поиска.

  • DISTINCT: Опция, удаляющая дублирующиеся данные из набора результатов. По умолчанию оператор UNION уже удаляет дублирующиеся данные, поэтому модификатор DISTINCT не влияет на результат.

  • ALL: Опция, возвращающая все наборы результатов, включая дублирующиеся данные.

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

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

Ниже приведены данные из таблицы "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  | 基础教程网      | http://ru.oldtoolbag.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

Ниже приведены данные APP "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 строк в наборе (0.00 сек)

Пример SQL UNION

Ниже приведено SQL-выражение, которое выбирает все из таблиц "Websites" и "apps"Разныеcountry (только уникальные значения):

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

Результат выполнения SQL будет следующим:

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

Пример SQL UNION ALL

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

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 будет следующим: