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

SQL Server 2005 EXCEPT与INTERSECT的区别

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

此文章主要向大家描述的是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://www.2345hao.cn/blog/index.php/post/21914.html

分享给朋友:

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

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

windows 7鼠标停顿怎么办?windows 7 usb鼠标停顿的原因以及解决

很多使用Windows 7系统的朋友都想小编反应,假如暂停使用电脑,鼠标会出现停顿现象,这是怎么回事呢 该怎么解决呢 下面就和小编一起去看下Windows 7 usb鼠标停顿的解决方法吧。 由于Windows 7系统中有一项USB选择性暂停造成的。这项设置主要为了节电,当他检测到用户没有对系统进行...

windows 7/8.1正在启动windows时间长的解决方法

windows 7/8.1正在启动windows时间长的解决方法

正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...

如何设置Win 7通知栏重新显示电源按钮

如何设置Win 7通知栏重新显示电源按钮

有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...

Windows7开机后出现黑一下屏性能降低

Windows7开机后出现黑一下屏性能降低

打开IE浏览器的时候、聊QQ的时候、玩游戏的时候… … 这到底是谁惹的祸呢? 很多人都知道Windows 7桌面特效全部开启会使系统性能降低,那到底是哪个特效导致的这一情况呢? 解决办法: 右键计算机,高级系统设置-性能-设置-关闭”任务栏和开始菜单使用动画“和”最大化和最小化动态显示窗口“...

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

解决windows 7无法将程序锁定到任务栏或附到开始菜单的方法

出现该问题的原因是由于使用第三方优化软件消除快捷方式的小箭头引起的。 1、在开始搜索框中键入“regedit”,按回车键打开注册表编辑器。 2、依次定位到以下分支:HKEY_CLASSES_ROOTlnkfile。 3、在lnkfile项上鼠标右键单击“新建”——“字符串值”。...

windows 7系统开机后出现黑屏提示Windows无法启动

windows 7系统开机后出现黑屏提示Windows无法启动

一些用户的Windows 7系统开机后出现黑屏,代码为 Windows无法启动: WindowsSystem32ConfigSystem”。这个问题该如何修复呢?现在小编就给大家分析一下吧。 其实这个代码的意思是引导文件丢失了,引导文件(NTLDR)一般存放于C盘根目录下,是一个具有隐藏和只读属性...