7.15 SQL Server UNION联合查询(并集)
SQL Server UNION(并集)
简介
SQL Server联合查询
SQL Server UNION是一种集合操作,它允许将两个查询的结果合并到一个结果集中,该结果集中包含属于UNION中SELECT语句的所有行。
语法:
query_1 UNION query_2
上面的语法有如下要求:
- 在两个查询中,列的数量和顺序必须相同
- 对应列的数据类型必须相同或者兼容
以下维恩图说明了T1表的结果集与T2表的结果集合合并:
UNION 与 UNION ALL
默认情况下,UNION
会从结果集中删除重复行。如果要保留重复行,则需要明确指定ALL关键字,如下所示:
query_1 UNION ALL query_2
换句话说,UNION
删除重复行,而UNION ALL
在最终结果集中包含重复行。
UNION(联合)与JOIN(联接)
联接(如内联接或左联接)合并两个表中的列,而联合合并两个查询中的行。
换句话说,join水平地附加结果集,而union垂直地附加到结果集中。
下图说明了联合和联接之间的主要区别:
示例
有如下员工和客户表:
以下示例将员工和客户的姓名合并到一个列表中:
SELECT first_name, last_name FROM sales.staffs UNION SELECT first_name, last_name FROM sales.customers;
一共返回1454行。
staffs
表有10行,customers
表有1445行,如下查询所示:
SELECT COUNT (*) FROM sales.staffs; -- 10 SELECT COUNT (*) FROM sales.customers; -- 1445
因为联合的结果集只返回1454行,这意味着删除了一个重复行。
如果要包含重复行,使用UNION ALL
,如以下查询所示:
SELECT first_name, last_name FROM sales.staffs UNION ALL SELECT first_name, last_name FROM sales.customers;
查询按预期返回1455行。
UNION与ORDER BY示例
要对UNION返回的结果进行排序,直接在最后一个查询中放置ORDER BY子句,如下所示:
SELECT select_list FROM table_1 UNION SELECT select_list FROM table_2 ORDER BY order_list;
要对客户和员工的名字和姓氏进行排序,可以使用以下查询:
SELECT first_name, last_name FROM sales.staffs UNION ALL SELECT first_name, last_name FROM sales.customers ORDER BY first_name, last_name;
分类:
SQL Server
标签:
SQL Server
, 数据库
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek “源神”启动!「GitHub 热点速览」
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器