ALL运算符
ALL在英文中的意思是“所有”,ALL运算符要求比较的值需要匹配子查询中的所有值。ALL运算符同样不能单独使用,必须和比较运算符共同使用。
下面的SQL语句用来检索在所有会员入会之前出版的图书:
SELECT * FROM T_Book WHERE FYearPublished<ALL(SELECT FYearOfJoin 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
与ANY 运算符相同,ALL 运算符同样不能与固定的集合相匹配,比如下面的SQL语句是错误的:
SELECT * FROM T_Book WHERE FYearPublished<ALL(2001,2003,2005)
不过这个限制并不会妨碍功能的实现,因为没有对固定的集合进行ALL匹配的必要,因为待匹配的集合是固定的,所以上面的SQL语句完全可以用下面的SQL语句来代替:
SELECT * FROM T_Book WHERE FYearPublished<2001
另外需要注意的就是,当使用ALL运算符的时候,如果带匹配的集合为空,也就是子查询没有返回任何数据的时候,不论与什么比较运算符搭配使用ALL的返回值将永远是true。比如下面的SQL语句用于检索在所有江苏省会员入会之前出版的图书:
SELECT * FROM T_Book WHERE FYearPublished<ALL(SELECT FYearOfJoin FROM T_Reader WHERE FProvince = "JiangSu")
执行完毕我们就能在输出结果中看到下面的执行结果:
FId FName FYearPublished FCategoryId
1 About J2EE 2005 4
2 Learning Hibernate 2003 4
3 Two Cites 1999 1
4 Jane Eyre 2001 1
5 Oliver Twist 2002 1
6 History of China 1982 2
7 History of England 1860 2
8 History of America 1700 2
9 History of TheWorld 2008 2
10 Atom 1930 3
11 RELATIVITY 1945 3
12 Computer 1970 3
13 Astronomy 1971 3
14 How To Singing 1771 5
15 DaoDeJing 2001 6
16 Obedience toAuthority 1995 6
这个查询结果将所有的会员都检索出来了,可是根本没有江苏省的会员,应该是返回空结果才对的。看起来这是错误的,其实这完全符合ALL 运算符的语义,因为没有江苏省的会员,所以每本书的出版年份就在所有的江苏省的会员之前,所以每一本书都符合匹配条件。在使用ALL运算符的时候,这一个问题很容易在系统中造成BUG,因此使用时必须注意。
ALL运算符的更多相关文章
- 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
随机推荐
- 原生js实现单屏滚动
类似于fullpage的单屏滚动,使用原生JS实现,不依赖任何js库: css: html,body {height:100%;} body {margin:0px;} div {height:100 ...
- Zyan 一个通信框架
原文地址 本文示例 Zyan是一个简单直观的分布式应用程序开发框架. 以下是Zyan项目的简要概述. 架构图: Zyan一般由客户端和服务端组成.服务端(以组件的形式)提供服务,客户端远程调用服务端的 ...
- 【BZOJ2882】工艺 [SAM]
工艺 Time Limit: 10 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 小敏和小燕是一对好朋友. 他们正在玩一 ...
- jQuery清空表单方法
$(':input', '#form1') .not(':button, :submit, :reset, :hidden') .val('') .removeAttr('checked') .rem ...
- JS 本地属性与继承属性
判断是否拥有某种属性 1.in 运算符 var obj = {name:'jack'}; alert('name' in obj); // --> true alert('toString' i ...
- 关于win7局域网共享的相关设置
模式1> 被访问方相关设置步骤: (1)被共享方的电脑开通来宾用户 (2)被共享方的电脑的本地安全策略需要设置成 "仅来宾" (3)被共享方的电脑高级共享设置中 " ...
- Java爬取网易云音乐民谣并导入Excel分析
前言 考虑到这里有很多人没有接触过Java网络爬虫,所以我会从很基础的Jsoup分析HttpClient获取的网页讲起.了解这些东西可以直接看后面的"正式进入案例",跳过前面这些基 ...
- selenium 点击浏览器按钮
利用以下的方法,selenium 也可以模拟点击各种浏览器按钮:browser.back()点击“返回”按钮.browser.forward()点击“前进”按钮.browser.refresh()点击 ...
- 通过file中的字段查询MySQL内容
# -*- coding: utf-8 -*- import MySQLdb with open(r"./user.txt", "r") as f: f.rea ...
- android studio 64位手机+Fresco引起的在arm64位机器上找不到对应的so库
我们的程序在32位机器上没有问题,有一天公司采购了一台魅族MX5 MTK的64位处理器上我们的应用报错了 "nativeLibraryDirectories=[/data/app/com.l ...