SQL UNION操作符

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值