SQL Server 中关于EXCEPT和INTERSECT的用法
熟练使用SQL Server中的各种用法会给查询带来很多方便。今天就介绍一下EXCEPT和INTERSECT。注意此语法仅在SQL Server 2005及以上版本支持。
EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。
INTERSECT是指在两个集合中都存在的数据。
测试如下:
create table t1(id int ,mark char (2)) go create table t2(id int ,mark char (2)) go insert into t1 select 1, 't1' union all select 2, 't2' union all select 3, 't3' union all select 4, 't4' go insert into t2 select 2, 't2' union all select 3, 'm3' union all select 5, 'm5' union all select 6, 't6' go select * from t1 EXCEPT select * from t2 go select * from t1 INTERSECT select * from t2 go --EXCEPT结果集为 --1 t1 --3 t3 --4 t4 --INTERSECT结果集为 --2 t2 |
EXCEPT和INTERSECT的优先级:
为了测试它们之间的优先级,运行下面的测试代码:
create table t3( int id,mark char (2)) go insert into t3 select 3, 't3' union all select 3, 'r3' union all select 5, 'm5' union all select 5, 'r5' union all select 7, 'b7' union all select 8, 'b8' go select * from t1 EXCEPT select * from t2 INTERSECT select * from t3 --运行结果 --1 t1 --2 t2 --3 t3 --4 t4 |
为什么会出现如上结果呢,请看下面的执行计划:
原来t2和t3先进行的INTERSECT运算,得出5 m5结果集,再和t1进行EXCEPT运算。
如需转载,请注明本文原创自CSDN TJVictor专栏:http://blog.csdn.net/tjvictor
windows技术爱好者
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构