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

معملator UNION في MySQL

本教程为大家介绍 MySQL UNION 操作符的语法和示例。

MySQL UNION 操作符用于将两个以上的 SELECT 语句的结果组合到一个结果集中。多个 SELECT 语句会删除重复的数据。

语法

MySQL UNION 操作符语法格式:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

参数

  • expression1, expression2, ... expression_n: 要检索的列。

  • tables: 要检索的数据表。

  • WHERE conditions: 可选,检索条件。

  • DISTINCT: 可选,删除结果集中的重复数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没有影响。

  • ALL: 可选,返回所有结果集,包括重复数据。

演示数据库

在本教程中,我们将使用 w3codebox 示例数据库。

以下是来自 "Websites" 表的数据:

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name | url | url | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | تاوباو          | https://www.taobao.com/   | 13    | CN      |
| 3  | موقع تعليمي أساسي      | http://ar.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 للاختيار من القيم المكررة!

مثال على UNION ALL SQL

استخدام UNION ALL في الجملة SQL لاستخراج من جداول "Websites" و "apps"جميعcountry (ويمكن أن تكون هناك قيم مكررة):

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

نتائج تنفيذ SQL أعلاه كالتالي:

UNION ALL مع WHERE

استخدام UNION ALL في الجملة SQL لاستخراج من جداول "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 أعلاه كالتالي: