此文章主要向大家描述的是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运算符的使用的描述,希望会给你带来一些帮助在此方面。
国外媒体CNET NEWS就这个“上帝模式”和微软Windows部门主管Steven Sinofsky进行邮件交流后得知,这其实只是众多快捷方式中的一个,Sinofsky在邮件里给出了十多个这类快捷方式的关键字符串。 它们的建立方法和之前的“上帝模式”一样,在任意位置新建的一个文件夹,然后改名即可...
Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...
故障现象: Windows 7酷狗软件无声音,系统声音正常。 原因分析: 1. 查看酷狗软件设置 2. 查看系统设置 解决方案: 1. Windows 7操作方法 如图:查看是否处于禁音状态 Windows 7系统声音正常酷狗音乐无声音 2. 查看设置音频输出是否...
用Windows 7久了,C盘越来越大,原来50G的空间基本用完了,又不想重装系统,就想着能不能直接扩容。 在网上搜了半天,看了无数教程,都写得不明不白的,结合了几篇教程才终于搞明白。 重新总结一下,方便有需要的人。 所用软件: http://www.jb51.net/softs/57895...
1月13日消息,微软今天为Windows 7(SP1)用户重新推送了编号为KB2952664的更新补丁,该更新在官方KB知识库中的描述为“Windows 7系统升级兼容性更新”,用于帮助微软改进当前版本系统,提升升级到最新版Win10系统的体验。 这项更新还用于在系统中显示Windows10更新提...
Ubuntu挂载U盘问题 复制代码代码如下: 老是说special device /dev/sdb1 does not exist,无比郁闷 复制代码代码如下:#fdisk /dev/sda 复制代码代码如下: 是有个 这个咚咚。。。。 复制代码代码如下: 最后: 复制代码代码如下:...