sql中exists替换in的区别
在sql中使用exists替换in查询时要注意使用exists时一定要关联主查询和子查询的关联不然查询会得不到相应的结果如下语句:
语句一使用in查询:
select realname from Users where Users.UserId in
(select Gallery.Galleries.CreatorId from Gallery.Galleries group by Gallery.Galleries.CreatorId
having COUNT(Gallery.Galleries.CreatorId)>1 ) Order by UserId
语句二使用exists查询:
select realname from Users where exists
(select Gallery.Galleries.CreatorId from Gallery.Galleries group by Gallery.Galleries.CreatorId
having COUNT(Gallery.Galleries.CreatorId)>1 ) Order by UserId
乍一看没有错误,但是语句二忘记了主查询和子查询的主键的关联,导致把主查询的所有内容查出来。
语句二的正确写法应该是:
select * from Gallery.Galleries as A where exists (select A .CreatorId from Gallery.Galleries as B
Where A.CreatorId = B.CreatorId group by B.CreatorId having COUNT(B.CreatorId)>1)Order by CreatorId
注:exists是boolean运算的只要字查询的结果集有一条数据结果就为真where后的条件就为真所以第二条查询语句等价于
select realname from Users where 1=1 Order by UserId(如果子查询有一条数据被查出)
转载于:https://www.cnblogs.com/Minghao_HU/archive/2012/11/22/2782388.html
sql中exists替换in的区别相关推荐
- SQL中exists和in的区别
假设如下应用: 两张表--用户表TDefUser(userid,address,phone)和消费表 TAccConsume(userid,time,amount),需要查消费超过5000的用户记录. ...
- sql中exits和in的区别
sql中exits和in的区别 转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exi ...
- SQL中where与having的区别
SQL中where与having的区别 目录 SQL中where与having的区别 创建表 插入数据 进行聚合操作 # WHERE是在聚合之前进行数据行的过滤而HAVING实在聚合之后进行新数据的过 ...
- SQL中modify和alter用法区别
SQL中modify和alter用法区别 1. 所属能力大小不同: modify:只能用于修改字段的属性 例如:把age字段变为非空(针对persons表中的age这一个字段进行修改) ALTER T ...
- SQL中EXISTS理解使用
SQL中EXISTS的理解使用 关联子查询 EXISTS理解使用 关联子查询 在讲述EXISTS用法之前,先讲述一下关联子查询: 关联子查询:是指在内查询中需要借助于外查询,而外查询离不开内查询的执行 ...
- 数据库查询语句SQL中like、%、-的区别
数据库查询语句SQL中like.%.-的区别 数据库查询语句SQL中like.%.-的区别 %百分号通配符:表示任何字符出现任意次数(可以是0次) SQL 语句选取 name 以字母 "k& ...
- sql中=null和is null区别
sql中=null和is null区别 前言 关于sql语句对null的处理尤其小心,这个null处理的知识点我看了好几次,但是很容易再次犯错,这次记录一个点, 因为这个错误是我看一个帖子看到的错误的 ...
- SQL中exists关键字的用法
exists用于检查一个子查询是否至少会返回一行数据(即检测行的存在),返回值为true或false. 语法: exists subquery 参数: subquery ...
- 《小常识-23》sql中any与some的区别
#在 SQL 中 ANY 和 SOME 是同义词,所以下面介绍的时候只使用 ANY,SOME 的用法 #和功能和 ANY 一模一样.和 IN 运算符不同,ANY 必须和其他的比较运算符共同使用,而 # ...
最新文章
- 006---Linux用户、群组和权限
- Kaggle入门 (Titanic XGBoost)
- fir.im Weekly - 2017 年必须了解的 iOS 开源库
- 可见光能量范围_JACS:游书力团队通过可见光促进的吲哚衍生物分子内去芳构化合成环丁烷稠合的四环吲哚螺环...
- LeetCode之两数之和
- 表空间自动报警存储过程
- LeetCode(283)——移动零(JavaScript)
- 解决gitlab限制上传大小文件的问题
- 洛谷 P2578 [ZJOI2005]九数码游戏【bfs+康托展开】
- JavaScript上传文件,不打断点就上传失败
- Java函数参数传递方式
- WPS Excel 模板设置与生成
- matlab进化树的下载,mega7.0进化树软件下载-mega 7.0 win 64位下载【附详细使用教程】 - 百当下载站...
- SP 梦网masterSP模式下的sp生存
- 【014】Excel宏编程的交互解析(MsgBox)_001_#VBA
- java uml类图虚线实线_UML类图中箭头和线条的含义和用法
- Idea 报错: Variable used in lambda expression should be final or effectively final
- 迅雷看看引领高清内容多屏合一新趋势
- 软件验证计划简化版模板
- python密码学pdf_Python密码学编程 ([美]斯维加特) 中文完整pdf扫描版[199MB]
热门文章
- c语言程序设计现代方法(2th)第12章答案(自己胡乱编写的答案,持续更新)
- python3中的while语句、if语句
- C++ vector的初始化、添加、遍历、插入、删除、查找、排序、释放操作
- 计算机无法屏幕亮度,我的电脑屏幕亮度无法调节了,品目很暗,求助
- Leetcode题库 136.只出现一次的数字(异或 C实现)
- 计算机组成原理-数制与编码
- 孤儿进程和僵死进程处理方法
- 关于loader asyncTaskLoader AsyncTask的理解
- 基于JAVA服务器监控系统设计,远程数字图像监控系统中web服务器的设计与实现...
- 计算机hub体系部件,原来如此!USB Hub接口为啥都是4个7个或10个?