您当前的位置: 首页 > 数据库教程 > MySQL教程 > 被遗忘的SQLServer比较运算符修饰词

被遗忘的SQLServer比较运算符修饰词

作者:不详 来源:网络 发布时间: 2014-07-24 14:48 点击:
SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。 官方的参考文档 http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx 他们作用于比较运算符和子查询之间,作用类似Exists、not exists、in、not in以及其他逻辑意

被遗忘的SQLServer比较运算符修饰词

  SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。

  官方的参考文档

  
http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx

  他们作用于比较运算符和子查询之间,作用类似Exists、not exists、in、not in以及其他逻辑意义,这些语法同样被SQLServer2000支持但是很少看到有人用它们。

  复制代码 代码如下:

  set nocount on

  use tempdb

  go

  if (object_id ('t1' ) is not null ) drop table t1

  create table t1 (n int )

  insert into t1 select 2 union select 3

  if (object_id ('t2' ) is not null ) drop table t2

  create table t2 (n int )

  insert into t2 select 1 union select 2 union select 3 union select 4

  select * from t2 where n> all (select n from t1 ) --4

  select * from t2 where n> any (select n from t1 ) --3,4

  --select * from t2 where n>some(select n from t1) --3,4

  select * from t2 where n= all (select n from t1 ) --无数据

  select * from t2 where n= any (select n from t1 ) --2,3

  --select * from t2 where n=some(select n from t1) --2,3

  select * from t2 where n< all (select n from t1 ) --1

  select * from t2 where n< any (select n from t1 ) --1,2

  --select * from t2 where n<some(select n from t1) --1,2

  select * from t2 where n<> all (select n from t1 ) --1,4

  select * from t2 where n<> any (select n from t1 ) --1,2,3,4

  --select * from t2 where n<>some(select n from t1)--1,2,3,4

  set nocount off

  注意,如果t1中包含null数据,那么所有All相关的比较运算将不会返回任何结果,原因就不用多解释了。而因为t1和t2表的null的存在他们和not exists之类的比较符会有一些区别。

  比如下面两句

  
select * from t2 a where not exists(select 1 from t1 where n>=a.n)

  select * from t2 where n >all(select n from t1)

  他们逻辑上意义很像但是对于null的处理却是恰恰相反,第一句会忽略子查询的null而把t2的null同时查出来,第二句却是忽略了t2的null同时会因为t1中的null而无法查询到数据。
分享到:
本文"被遗忘的SQLServer比较运算符修饰词"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4