SQL UNION操作符
SQL UNION操作符合并两个或多个SELECT语句的结果。
请注意,UNION内部的每个SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个SELECT语句中的列的顺序必须相同。
SQL UNION语法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2
注释:默认地,UNION操作符选取不同的值。如果允许重复值,请使用UNION ALL。
SQL UNION ALL语法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2
注释:UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。
Websites表数据:
SELECT * FROM websites
personID name url alexa country
1 Google https://www.google.cm/ 1 USA
2 淘宝 https://www.taobao.com/ 13 CN
3 菜鸟教程 https://www.runoob.com/ 4689 CN
4 微博 https://www.weibo.com/ 20 CN
5 Facebook https://www.facebook.com/ 3 CN
7 stackoverflow https://www.stackoverflow.com/ 0 USA
apps表数据:
CREATE TABLE apps
(
id int,
app_name varchar(255),
url varchar(255),
country varchar(255)
)
INSERT INTO apps(id,app_name,url,country)
VALUES
('1','QQ APP','http://im.qq.com/','CN')
('2','微博 APP','http://weibo.com/','CN'),
('3','淘宝 APP','https://www.taobao.com/','CN')
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
SQL UNION 实例:
从’Websites’表 和 'Apps’表中选取不同的country(只有不同的值):
SELECT country FROM websites
UNION
SELECT country FROM apps
ORDER BY country
country
CN
USA
注释:UNION不能用于列出两个表中所有的country。如果一些网站和APP来自同一个国家,每个国家只会列出一次。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
country
CN
CN
CN
CN
CN
CNSELECT country,name FROM Websites
WHERE country = 'CN'
UNION ALL
SELECT country,app_name FROM Apps
WHERE country = 'CN'
CN
USA
USA
带有WHERE的SQL UNOIN ALL
下面的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'
----也可以加上url列查询
country name
CN 淘宝
CN 菜鸟教程
CN 微博
CN Facebook
CN QQ APP
CN 微博 APP
CN 淘宝 APP