SQL嵌套查寻初识,以及SOME ANY EXISTS的基础常识
SELECT <目标表达式1>[,...]
FROM<表或视图名1>
//FROM(<查询到的表或视图名1>)
WHERE [表达式] (SELECT <目标表达式2>[,...]
FROM <表或视图名2>)
[GROUP BY <分组条件>
HAVING [<表达式>比较运算符] (SELECT <目标表达式2>[,...]
FROM <表或视图名2> )]
子查询存在NULL值时,避免使用NOT IN。因为当子查询的结果包括了NULL值的列表时,把NULL值当成一个未知数据,不会存在查询值不在列表中的记录。
use student
select *
from student
where 学号 not in
(select 学号 from grade
)
由于子查询的结果包括了NULL值,所以最终的查询结果只有空值。正确查询的SQL语句如下:
use student
select *
from student
where 学号 not in
(select 学号 from grade where 学号 is not null)
SQL支持3种定量比较谓词:SOME、ANY和ALL。它们都是判断是否任何或全部返回值都满足搜索要求的。其中SOME和ANY谓词是存在量的,只注重是否有返回值满足搜索要求。这两种谓词含义相同,可以替换使用。
SOME是把每一行指定的列值与子查询的结果进行比较,如果哪行的比较结果为真,满足条件就返回该行。本实例的嵌套的子查询结果就是一个数值,然后“student”学生表的每一条记录的年龄列值与之相比较,满足就返回行。
ANY属于SQL支持的3种定量谓词之一。且和SOME完全等价,即能用SOME的地方完全可以使用ANY。
SQL中定量谓词不支持反操作,也就是说,不能在ANY或者SOME前加NOT关键字。但可以用“<>”号表示否定
EXISTS谓词只注重子查询是否返回行。如果子查询返回一个或多个行,谓词返回为真值,否则为假。EXISTS搜索条件并不真正地使用子查询的结果。它仅仅测试子查询是否产生任何结果。
SQL嵌套查寻初识,以及SOME ANY EXISTS的基础常识的更多相关文章
- SQL——嵌套查询与子查询
前言 sql的嵌套查询可以说是sql语句中比较复杂的一部分,但是掌握好了的话就可以提高查询效率.下面将介绍带in的子查询.带比较运算符的子查询.带any/all的子查询.带exists的子查询以及基于 ...
- 转【】浅谈sql中的in与not in,exists与not exists的区别_
浅谈sql中的in与not in,exists与not exists的区别 1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表 ...
- 浅谈sql中的in与not in,exists与not exists的区别
转 浅谈sql中的in与not in,exists与not exists的区别 12月12日北京OSC源创会 —— 开源技术的年终盛典 » sql exists in 1.in和exists ...
- (转)sql中 in 、not in 、exists、not exists 用法和差别
exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AI ...
- SQL Server - 数据库初识
在互联网笔试中,常遇到数据库的问题,遂来简单总结,注意,以 Sql Server 数据库为例. 数据库 数据库系统,Database System,由数据库和数据库管理系统组成. 数据库,Data ...
- PL/SQL 嵌套表变长数组和索引表[转]
关于PL/SQL中这三种数组的介绍,不想写了.转一篇日志吧…… 链接:http://www.blogjava.net/decode360/archive/2008/08/08/280825.html ...
- LINQ体验(7)——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains
我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和Exists/In/Any/All/Contains操作符. Group By/Having操作符 适用场景 ...
- SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)
前言 本节我们来综合比较NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL的性能,简短的内容,深入的理解,Always to review the basics. ...
- SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)
1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] ...
随机推荐
- 谷歌的ajax.googleapis.com被墙导致访问很多国外网站很慢的解决方法
比如访问StackOverflow, 更比如flexerasoftware.com(导致Visual Studio的打包程序InstallShield Limited Edition不能注册和下载) ...
- 51nod1294 修改数组
看题解的...就是将必须要修改的数去掉后求最长的不递减子序列. upper_bound+lower_bound要理解.有时候-1有时候不用是有原因的. #include<cstdio> # ...
- STL set容器的一点总结
整理了一下set常用语句,参看这篇http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/13/2636375.html -------------- ...
- Web程序员最常用的11款PHP框架
PHP框架是Web程序员和开发人员最为有用的工具. PHP框架可以帮助用户更快地开发项目. 今天我将为开发人员带来几款最好的PHP框架,希望能对你有用. 1.Agavi Agavi是一款强大的,可扩展 ...
- 学会简单使用poi进行excel有关操作
直接上代码: 官网上的抄的api例子: package com.test; import java.io.File; import java.io.FileInputStream; import ja ...
- Activiti 多个并发子流程的应用
多个部门发起资金计划,最后统一到财务部审批,每个部门发起资金计划是一个子流程,财务部审批是多个部门的计划同时审批,审批完成后,再提交上级领导审批. 流程如下: 要解决以上问题,需要实现多个子流程并行处 ...
- JAVA遍历一个文件夹中的所有文件
在实际项目中给定一文件夹,得到这个文件夹下所有的文件这样的需求并不是很多,更多的是查找或是删除某一具体的文件 import java.io.File; import java.util.ArrayLi ...
- Android随笔--使用ViewPager实现简单地图片的左右滑动切换
Android中图片的左右切换随处可见,今天我也试着查阅资料试着做了一下,挺简单的一个小Demo,却也发现了一些问题,话不多说,上代码~: 使用了3个xml文件作为ViewPager的滑动page,布 ...
- XSS 前端防火墙(1):内联事件拦截
关于 XSS 怎样形成.如何注入.能做什么.如何防范,前人已有无数的探讨,这里就不再累述了.本文介绍的则是另一种预防思路. 几乎每篇谈论 XSS 的文章,结尾多少都会提到如何防止,然而大多万变不离其宗 ...
- MicroSD卡(TF卡)SPI模式实现方法
现在我们手机的内存卡多为Micro SD卡,又叫TF卡,所以Micro SD卡比SD卡常见.自己曾经也想写写SD卡的读取程序,但又不想特地再去买个SD卡,这时想起手机内存卡不是和SD卡很像吗?在网上查 ...