当前位置:首页 > 系统运维 > 正文内容

SQL Server 2005 EXCEPT与INTERSECT的区别

a8116255316年前 (2010-07-13)系统运维11

此文章主要向大家描述的是SQL Server 2005 EXCEPT与INTERSECT运算符的正确使用,同时本文也有对EXCEPT与INTERSECT运算符的实际应用的比较,以及对其在实际操作中值得我们大家注意的相关事项的描述。

1.简介

SQL Server 2005 EXCEPT和INTERSECT运算符使您可以比较两个或多个SELECT语句的结果并返回非重复值。

2.区别

EXCEPT运算符返回由EXCEPT运算符左侧的查询返回、而又不包含在右侧查询所返回的值中的所有非重复值。

INTERSECT返回由INTERSECT运算符左侧和右侧的查询都返回的所有非重复值。

3.注意事项

(1).使用SQL Server 2005 EXCEPT或INTERSECT比较的结果集必须具有相同的结构。它们的列数必须相同,并且相应的结果集列的数据类型必须兼容

(2).INTERSECT运算符优先于EXCEPT

(3).SELECT INTO必须是包含INTERSECT或EXCEPT运算符的语句中的之一个查询,用来创建容纳最终结果集的表

(4).ORDER BY子句中的列名或别名必须引用左侧查询返回的列名

4.例题:

建立3个表,分别插入数据

create table TableA(col1 int)   insert into TableA select 1   insert into TableA select 1   insert into TableA select 2   insert into TableA select 3   insert into TableA select 4   insert into TableA select 4   insert into TableA select 5   insert into TableA select null   insert into TableA select null   create table TableB(col2 int)   insert into TableB select null   insert into TableB select 1   insert into TableB select 2   insert into TableB select 3   create table TableC(col3 int)   insert into TableC select 1   insert into TableC select 5   insert into TableC select 6  

利用SQL Server 2005 EXCEPT

找出TableA表的col1列不存在Tablec表col1列的所有非重复值

SELECT col1 FROM TableA   EXCEPT   SELECT col3 FROM Tablec  

结果如下:

col1   -   NULL   2   3   4   

sql 2000的版本,用not exists实现SQL Server 2005 EXCEPT的功能

SELECT col1   FROM TableA as a   where not exists(SELECT col3 FROM Tablec where a.col1=col3)   group by col1  

sql 2000,not in是得不到上述结果的

空值表示值未知。空值不同于空白或零值。没有两个相等的空值。

比较两个空值或将空值与任何其他值相比均返回未知,这是因为每个空值均为未知。

使用IN或NOT IN比较后返回的所有空值都将返回UNKNOWN。

将空值与IN或NOT IN一起使用会产生意外结果。

SELECT col1   FROM TableA   where col1 not in(SELECT col3 FROM Tablec)   group by col1  

结果如下:

col1   -   2   3   4   

INTERSECT运算符优先于EXCEPT

运算步骤是:先运算TableB和TableC的INTERSECT,再和TableA运算SQL Server 2005 EXCEPT

SELECT col1 FROM TableA   EXCEPT   SELECT col2 FROM TableB   INTERSECT   SELECT col3 FROM TableC  

结果如下:

col1   -   NULL   2   3   4   5   

SELECT INTO的应用

SELECT INTO必须是语句中的之一个查询

我记得SELECT INTO与UNION运算符的使用也是这样的规则

SELECT col1   into #tem   FROM TableA   EXCEPT   SELECT col3   FROM Tablec   select * from #tem   drop table #tem 

结果如下:

col1   -   NULL   2   3   4   

ORDER BY子句

ORDER BY子句中的列名或别名必须引用左侧查询返回的列名

SELECT col1 FROM TableA   INTERSECT   SELECT col3 FROM TableC   order by col1  

结果如下:

col1   -   1   5   

上述的相关内容就是对SQL Server 2005中EXCEPT和INTERSECT运算符的使用的描述,希望会给你带来一些帮助在此方面。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/21914.html

分享给朋友:

“SQL Server 2005 EXCEPT与INTERSECT的区别” 的相关文章

上帝不止一个 更多Windows7 快捷模式.

上帝不止一个 更多Windows7 快捷模式.

国外媒体CNET NEWS就这个“上帝模式”和微软Windows部门主管Steven Sinofsky进行邮件交流后得知,这其实只是众多快捷方式中的一个,Sinofsky在邮件里给出了十多个这类快捷方式的关键字符串。 它们的建立方法和之前的“上帝模式”一样,在任意位置新建的一个文件夹,然后改名即可...

Skylake平台不能通过USB接口装windows 7系统

Skylake平台不能通过USB接口装windows 7系统

Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

Win 7系统中其他声音正常但酷狗音乐没声音怎么回事

故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态   Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

windows 7如何给c盘扩容 图解windows 7 64位系统C盘扩容方法(自

用Windows 7久了,C盘越来越大,原来50G的空间基本用完了,又不想重装系统,就想着能不能直接扩容。 在网上搜了半天,看了无数教程,都写得不明不白的,结合了几篇教程才终于搞明白。 重新总结一下,方便有需要的人。 所用软件: http://www.jb51.net/softs/57895...

微软为windows 7用户重新发布补丁KB2952664 帮助提升Win10升级体

微软为windows 7用户重新发布补丁KB2952664 帮助提升Win10升级体

1月13日消息,微软今天为Windows 7(SP1)用户重新推送了编号为KB2952664的更新补丁,该更新在官方KB知识库中的描述为“Windows 7系统升级兼容性更新”,用于帮助微软改进当前版本系统,提升升级到最新版Win10系统的体验。 这项更新还用于在系统中显示Windows10更新提...

Ubuntu系统上挂载U盘和Windows分区问题的解决实例

Ubuntu系统上挂载U盘和Windows分区问题的解决实例

Ubuntu挂载U盘问题 复制代码代码如下: 老是说special device /dev/sdb1 does not exist,无比郁闷 复制代码代码如下:#fdisk /dev/sda 复制代码代码如下: 是有个 这个咚咚。。。。 复制代码代码如下: 最后: 复制代码代码如下:...