EXCEPT 和 INTERSECT (Transact-SQL)

本文介绍了SQL Server 2005新增的EXCEPT和INTERSECT语法,这两种语法用于比较两个查询的结果集,并返回非重复值。EXCEPT返回左侧查询中右侧查询未包含的非重复值;INTERSECT则返回两个查询都有的非重复值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!

陈希章

原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/04/18/1438515.html
原文标题:EXCEPT 和 INTERSECT (Transact-SQL)
原文发表:2009/4/18 1:36:00

这两个是SQL 2005增加的新语法,很有意思的。有兴趣的朋友可以参考

http://msdn.microsoft.com/zh-cn/library/ms188055(SQL.90).aspx

 

比较两个查询的结果,返回非重复值。

EXCEPT 从左查询中返回右查询没有找到的所有非重复值。

INTERSECT 返回 INTERSECT 操作数左右两边的两个查询都返回的所有非重复值。

以下是将使用 EXCEPT 或 INTERSECT 的两个查询的结果集组合起来的基本规则:

  • 所有查询中的列数和列的顺序必须相同。
  • 数据类型必须兼容。

主题链接图标 Transact-SQL 语法约定

语法

{ 
 
   | ( 
  
    ) } 
{ EXCEPT | INTERSECT }
{ 
   
     | ( 
    
      ) }
    
   
  
 

参数

< query_specification> | ( < query_expression> )

查询规范或查询表达式返回与来自另一个查询规范或查询表达式的数据相比较的数据。在 EXCEPT 或 INTERSECT 运算中,列的定义可以不同,但它们必须在隐式转换后进行比较。如果数据类型不同,则用于执行比较并返回结果的类型是基于数据类型优先级的规则确定的。

如果类型相同,但精度、小数位数或长度不同,则根据用于合并表达式的相同规则来确定结果。有关详细信息,请参阅 精度、小数位数和长度 (Transact-SQL)

查询规范或表达式不能返回 xmltextntextimage 或非二进制 CLR 用户定义类型列,因为这些数据类型不可比较。

EXCEPT

从 EXCEPT 操作数左边的查询中返回右边的查询未返回的所有非重复值。

INTERSECT

返回 INTERSECT 操作数左右两边的两个查询均返回的所有非重复值。

作者:陈希章
出处:http://blog.youkuaiyun.com/chen_xizhang
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值