ANY和SOME 运算符
在SQL中ANY和SOME是同义词,所以下面介绍的时候只使用ANY,SOME的用法和功能和ANY一模一样。和IN运算符不同,ANY必须和其他的比较运算符共同使用,而且必须将比较运算符放在ANY 关键字之前,所比较的值需要匹配子查询中的任意一个值,这也就是ANY在英文中所表示的意义。
首先看一个ANY 运算符和等于运算符(=)共同使用的例子,下面的SQL语句检索所有图书出版年份内入会的读者信息:
SELECT * FROM T_Reader WHERE FYearOfJoin =ANY(select FYearPublished FROM T_Book)
外部查询中的WHERE子句指定FYearOfJoin 必须等于子查询select FYearPublished FROM T_Book所返回的集合中的任意一个值。
执行完毕我们就能在输出结果中看到下面的执行结果:
FID FNAME FYEAROFBIRTH FCITY FPROVINCE FYEAROFJOIN
1 Tom 1979 TangShan Hebei 2003
2 Sam 1981 LangFang Hebei 2001
3 Jerry 1966 DongGuan GuangDong 1995
4 Lily 1972 JiaXing ZheJiang 2005
5 Marry 1985 BeiJing BeiJing 1999
6 Kelly 1977 ZhuZhou HuNan 1995
7 Tim 1982 YongZhou HuNan 2001
9 John 1979 QingDao ShanDong 2003
11 July 1983 ZhuMaDian HeNan 1999
12 Fige 1981 JinCheng ShanXi 2003
这个SQL语句的检索结果与上一节介绍的使用IN 运算符得到的结果是一致的:
SELECT * FROM T_Reader WHERE FYearOfJoin IN(select FYearPublished FROM T_Book)
也就是说“=ANY”等价于IN 运算符,而“<>ANY”则等价于NOT IN 运算符。
除了等于运算符,ANY运算符还可以和大于(>)、小于(<)、大于等于(>=)、小于等于(<=)等比较运算符共同使用。比如下面的SQL语句用于检索在任何一个会员出生之前出版的图书:
SELECT * FROM T_Book WHERE FYearPublished<ANY(SELECT FYearOfBirth FROM T_Reader)
执行完毕我们就能在输出结果中看到下面的执行结果:
FID FNAME FYEARPUBLISHED FCATEGORYID
6 History of China 1982 2
7 History of England 1860 2
8 History of America 1700 2
10 Atom 1930 3
11 RELATIVITY 1945 3
12 Computer 1970 3
13 Astronomy 1971 3
14 How To Singing 1771 5
注意,和IN 运算符不同,ANY 运算符不能与固定的集合相匹配,比如下面的SQL 语句是错误的:
SELECT * FROM T_Book WHERE FYearPublished<ANY(2001,2003,2005)
不过这个限制并不会妨碍功能的实现,因为没有对固定的集合进行ANY匹配的必要,因为待匹配的集合是固定的,所以上面的SQL语句完全可以用下面的SQL语句来代替:
SELECT * FROM T_Book WHERE FYearPublished<2005
ANY和SOME 运算符的更多相关文章
- shell运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. #!/bin/bash v ...
- SQL Server-聚焦APPLY运算符(二十七)
前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...
- java中的移位运算符:<<,>>,>>>总结
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- .NET 基础 一步步 一幕幕[运算符、占位符、转义符]
运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...
- ECMASCript2015 提案 stage-3的对象展开运算符
看源码时看到如下的代码 export default { //通过mapActions将actions映射到methods里 methods: { ...mapActions([ 'updateSta ...
- JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)
1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...
- JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)
1.3种原始表达式 1.直接量: 1.23 //数字直接量 “hello” //字符串直接量 ...
- LINQ to SQL语句(18)之运算符转换
运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...
- El表达式的关系运算符
El表达式的关系运算符: == 对应 eq != 对应 ne > 对应 gt < 对应 It
随机推荐
- lambda表达式的应用例子和JavaSE 8特性
在JavaSE 8 引入了lambda表达式,lambda表达式的引入带来的好处是:通过语法上的改进,减少开发人员需要编写和维护的代码数量.这个在下面使用和不使用lambda的对比中可以清晰看出来. ...
- 【TYVJ】1520 树的直径
[算法]树的直径 memset(a,0,sizeof(a)) #include<cstdio> #include<algorithm> #include<cstring& ...
- lua中的继承
做为一个java出身的程序媛,长时间做Lua,重复一些工作后,特别想用继承.其实很简单.因为我有一大部分的场景,背景长的都一样,所以打算做一个父类. 需要注意的是,如果子类有和父类的同名函数,就会被覆 ...
- HTML5 Canvas时间效果
Canvas 时间效果: function clockTest() { var canvas = document.getElementById('canvas'); if (!(canvas &am ...
- python碎片记录(二)
1.字典中嵌套字典使用 dict={'a':{1:2,2:3}} print(dict) print(dict['a'][2]) 输出如下: {'a': {1: 2, 2: 3}} 3 2.元组与l ...
- 第一章: 文件句柄转化为 typeglob/glob 与文件句柄检测
#为了使在子例程中传递文件句柄不出问题 #我们要把文件句柄转为glob或typeglob #转为glob $fd = *MY_FILE; #转为typeblog $fd = \*MY_FILE; #两 ...
- 上传漏洞新姿势(限Linux)
服务器:Linux当前环境:nginx/1.4.7PHP版本:PHP Version 7.0.0 上传情况简介:上传 111.jpg111 确实可以成功的但是上传 1.php.jpg1111.1 ...
- ogre3d环境配置 SDK安装配置及简单事例教程
ogre3d环境配置 SDK安装配置及简单事例教程 http://www.cr173.com/html/22594_1.html ogre3d环境配置 SDK安装配置及简单事例教程 http://ww ...
- PhysX SDK
PhysX SDK https://developer.nvidia.com/physx-sdk NVIDIA PhysX SDK Downloads http://www.nvidia.cn/obj ...
- Docker壳的配置笔记
docker 就是一个运行容器,在这个盒子里,他的端口,路径可以虚拟到另一个实际的磁盘上,运行空间独立,更安全! yum install -y docker docker-client service ...