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,如下图所示:

- 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 |
本文详细介绍了SQL Server中的UNION操作,包括其合并查询结果的规则,以及与UNION ALL的区别。通过实例演示了如何使用UNION和UNION ALL获取无重复行和包含重复行的结果。此外,还讲解了如何在结果集中排序和理解UNION与JOIN操作的不同。
1288

被折叠的 条评论
为什么被折叠?



