English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本教程为大家介绍 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 التالية تختار جميع السجلات من جداول "Websites" و "apps"مختلفcountry (قيم مختلفة فقط):
SELECT country FROM Websites UNION SELECT country FROM apps ORDER BY country;
نتائج تنفيذ SQL أعلاه كالتالي:
ملاحظة:لا يمكن استخدام UNION للإشارة إلى جميع القيم في country من الجداول الاثنتين. إذا كانت بعض المواقع وال تطبيقات تأتي من نفس البلد، سيتم عرض كل بلد مرة واحدة. UNION سيختار القيم المختلفة فقط. استخدم UNION ALL للاختيار من القيم المكررة!
استخدام UNION ALL في الجملة SQL لاستخراج من جداول "Websites" و "apps"جميعcountry (ويمكن أن تكون هناك قيم مكررة):
SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY country;
نتائج تنفيذ SQL أعلاه كالتالي:
استخدام 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 أعلاه كالتالي: