SQL Server Union(并集)

SQL Server Union(并集)

SQL Server union 是一组集合操作,用于将两个select语句的结果组合到一个结果集中,该结果集包括属于union中select语句的所有行。

语法:

query_1

UNION

query_2

要求:

-两个查询中列的数量必须相同

-相应列的数据类型必须相同或兼容

 

UNION与UNION ALL

默认情况下,UNION运算符从结果集中删除所有重复的行。如果要保留重复的行,则需要明确指定all关键字,也就是说,union删除重复行,而union all包含重复行。

query_1

UNION ALL

query_2

Union与join

Inner join和left join等连接组合了连个表中的列,而union组合了两个查询中的行。

即:join是水平附加结果集,union是垂直附加结果集

1.union和union all实例

将成绩表中的课程号和学生表中的学生号合并到一个列表中:

select cno

from sc

union 

select sno

from student

 

如上图所示 ,sc(成绩表)中cno有十行,student表中sno有10行

但是,把成绩表中的课程号和学生表中的学生号合并到一个列表后只有13行,因为sc表中查出来的有重复行,union会删除重复行。

要包含重复行,请使用union all,如下图所示:

 

  1. union 和order by示例

要对union运算符返回的结果集进行排序,请将order by子句放在最后一个查询中,如:

SELECT

select_list

FROM

table_1

UNION

SELECT

select_list

FROM

table_2

ORDER BY

order_list;

如果语句包含 UNION、INTERSECT 或 EXCEPT 运算符,则 ORDER BY 项必须出现在选择列表中。

可以理解为,如下图所示,

A集合中有3个数1,2,3,B集合中也有三个数3,4,5,

UA{1,2,3} UB{3,4,5}  C是A和B的重复行

用union合并起来得到的应该是UA+B={1,2,3,3,4,5},但是union会删除重复行C

所以A+B得到的是UA+B={1,2,3,4,5},要想得到UA+B={1,2,3,3,4,5}则必须使用union all

 

 

Union会垂直附加结果集,下面是使用union合并的结果集:

1

2

3

4

5

下面是使用union all合并的结果集:

1

2

3

3

4

5

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值