EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False。

EXISTS指定一个子查询,检测行的存在。语法EXISTS subquery参数
subquery是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。
有关更多信息,请参见select中有关子查询的讨论。结果类型Boolean结果值如果子查询包含行,则返回 TRUE。

一种通俗的可以理解为:将外查询表的每一行,代入内查询作为检验,如果内查询返回的结果取非空值,则EXISTS子句返回TRUE,这一行行可作为外查询的结果行,否则不能作为结果。exists引导的子句有结果集返回,那么exists这个条件就算成立了,

1、select 1 from mytable;与select anycol(目的表集合中的任意一行) from mytable;与select * from mytable 作用上来说是没有差别的,都是查看是否有记录,一般是作条件用的。select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,
因为不用查字典表。2、查看记录条数可以用select count(1) from mytable;等价于select count(*) from mytable;

举例1

1.emp 员工表

-- ----------------------------
-- Table structure for `emp`
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (`ename` varchar(100) NOT NULL DEFAULT '',`parent_deptno` varchar(100) DEFAULT NULL,PRIMARY KEY (`ename`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES ('吴磊', '30');
INSERT INTO `emp` VALUES ('张旭', '20');
INSERT INTO `emp` VALUES ('徐家俊', '30');
INSERT INTO `emp` VALUES ('文德', '30');
INSERT INTO `emp` VALUES ('李散', '20');
INSERT INTO `emp` VALUES ('李超', '30');
INSERT INTO `emp` VALUES ('江帅', '10');
INSERT INTO `emp` VALUES ('甘坤', '30');
INSERT INTO `emp` VALUES ('程伟', '30');
INSERT INTO `emp` VALUES ('远强', '20');
INSERT INTO `emp` VALUES ('郑军', '20');

2.dept部门表

-- Table structure for `dept`
-- ----------------------------
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (`deptno` varchar(100) NOT NULL DEFAULT '',`dname` varchar(100) DEFAULT NULL,`loc` varchar(100) DEFAULT NULL,PRIMARY KEY (`deptno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
-- Records of dept
-- ----------------------------
INSERT INTO `dept` VALUES ('10', '会计部', '纽约');
INSERT INTO `dept` VALUES ('20', '调查部', '北京');
INSERT INTO `dept` VALUES ('30', '销售部', '墨西哥');
INSERT INTO `dept` VALUES ('40', '运行部', '杭州');

3.需要优化的sql语句

第一种写法

select * from dept where deptno in (select distinct parent_deptno from emp);

第二种写法效率高

通过外表dept和内表emp关联查询,先查询外表的字段deptno与内表一一进行匹配,如果存在就列出来。

select * from dept d where EXISTS (select * from emp e where d.deptno=e.parent_deptno);

4.两张表查询的结果都是一个样的

案例2、项目中的select1 和exists组合

SELECT * FROM AUTO_DEDUCT_BALANCE_GIVE f
WHERE  EXISTS (SELECT 1 FROM LIST_LOAN_BALANCE_D d WHERE f.DUE_BILL_ID=d.DUE_BILL_ID)

通过外表f 和内表d关联查询,先查询外表的字段DUE_BILL_ID与内表一一进行匹配,如果存在就列出来。

exists子查询原理及案例分析相关推荐

  1. 性能为王:SQL标量子查询的优化案例分析

    本篇整理内容是黄廷忠在"云和恩墨大讲堂"微信分享中的讲解案例,SQL优化及SQL审核,是从源头解决性能问题的根本手段,无论是开发人员还是DBA,都应当持续深入的学习SQL开发技能, ...

  2. MySQL子查询原理分析

    01 前言 子查询,通俗解释就是查询语句中嵌套着另一个查询语句.相信日常工作中接触到 MySQL 的同学都了解或使用过子查询,但是具体它是怎样实现的呢? 查询效率如何? 这些恐怕好多人就不太清楚了,下 ...

  3. MVC原理及案例分析

    MVC原理及案例分析 关于MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑 ...

  4. Oracle数据库:子查询、单行子查询,多行子查询,in,any,all语句,子查询的练习案例

    Oracle数据库:子查询.单行子查询,多行子查询,in,any,all语句,子查询的练习案例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 ...

  5. 子查询(exists子查询)

    MySQL子查询(exists子查询) 1:Exists子查询就是用来判断某些条件是否满足(跨表),Exists是接在where之后,Exists返回的结果只有0和1 2:返回结果的演示 SELECT ...

  6. 图解通信原理与案例分析-26: 5G NR是如何支持海量机器类通信mMTC的?移动通信对物联网的支持

    前言: 移动通信最初是解决人与人之间的语音通信,后来发展成了人与人之间的文本通信, 到了4G LTE,已经很好的解决了人与人之间的视频通信. 到了5G,人与人之间的高速率的数据通信在LTE的基础之上得 ...

  7. 读书笔记之 大型网站技术架构(核心原理与案例分析)

    前言 坚持看了十几天的书,终于完成了毕业后第一次静下心来,利用业务时间看书并做笔记的成就了.废话不多说,这回看的是一直很膜拜的李智慧大神写的大型网站技术架构-核心原理与案例分析. 简短的读后感 极其推 ...

  8. 分布式计算,大型网站技术架构:核心原理与案例分析

    这个回答,非常详细. 但是,大部分内容,都来自"大型网站技术架构:核心原理与案例分析". 最近,初步看了这本书,觉得写得太好了,比较系统和全面. 不过,我还是不喜欢吹B" ...

  9. SQL之EXISTS子查询和IF条件查询

    不积跬步,无以至千里. " 今天给大家分享的是SQL的EXISTS子查询和IF条件查询语句. EXISTS EXISTS子查询 EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际 ...

最新文章

  1. 各种语言下 static 详解
  2. 2019ug最新版本是多少_NX1847:2019年最新版本,从某种意义上来说,也将是终极版本...
  3. JS(JavaScript)的初了解6(更新中···)
  4. mysql 介绍 知乎_SQL介绍——Mysql
  5. SQL -- 数据字典生成工具
  6. React jsx转换成原生JavaScript的一个例子
  7. www(apache)服务器的基本设置
  8. 云小课 | 需求任务还未分解,该咋整!项目管理Scrum项目工作分解的心酸谁能知?
  9. 去除主页ImageView图片的上下空白
  10. 24. Element namespaceURI 属性
  11. 如何使用shell收集linux系统状态,并把结果发给远端服务器
  12. 我读“世界500强面试题”
  13. 华东师范大学副校长周傲英:数据赋能,从数据库到数据中台
  14. HTML+CSS美食静态网页设计
  15. 《雪鹰领主3D》昨日腾讯玩吧首发! HTML5进入3D游戏时代!
  16. 19年11月份,我为什么从上一家公司离职
  17. 一笔画问题中用奇点判断是否可以一笔完成
  18. 《自控力》第四章读书笔记
  19. 今天是2014年9月7日
  20. Jzoj3547 MEX

热门文章

  1. 原来是这样的,我明白了,
  2. Linux 升级到指定内核(Centos7 yum升级内核、centos系统中kernel-devel)
  3. 深圳将在2015年推广家庭服务机器人
  4. SELECT后面有自定义函数的优化方法
  5. 【CET4四级英语】【单词】英语四级高频词汇(2)
  6. 蚂蚁感冒问题暴力解决
  7. java实验 月亮围绕地球转_月亮绕着地球转,地球围绕着太阳转,那么太阳围绕着什么转?...
  8. 经典进程同步问题——吸烟者问题
  9. 浅说Mathworks的算法开发解决方案和MBD
  10. 西工大-网安学院-2021复试-面试题目