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. 5G 信令流程 — 5GS 的 gNB 切换(Xn/N2 Handover)管理
  2. KMP经典算法与变形的应用(字符串parttern匹配问题)
  3. 固定顶部指定div不滑动
  4. leedcode04:转换字符串的最少操作次数
  5. JSON Web Token (JWT),服务端信息传输安全解决方案
  6. 为什么我喜欢Java的细节
  7. 算法高级(37)-微信、微博中的好友关系该如何设计?
  8. 拳王虚拟项目公社:人人可操作的轻松简单的虚拟资源课程虚拟项目
  9. python聚类分析散点图_使用sklearn对iris数据集进行聚类分析
  10. spring3.1声明式事务管理
  11. python3pygame 游戏程序_python3 pygame实现接小球游戏
  12. 火狐浏览器无法选择安装盘
  13. 2021年中国研究生数学建模竞赛B题——空气质量预报二次建模
  14. 土地购买(USACO 2008 March Gold)
  15. GIS招聘 | 云南省自然资源厅所属事业单位
  16. bellman_ford
  17. sudo rm -f /
  18. 运行在命令行的微信 cmd-wechat-terminal
  19. 如何快速的下载百度网盘的文件
  20. 文件服务器均衡负载,文件服务器均衡负载

热门文章

  1. 三冲IPO,亨达海天能否敲开美股上市大门?
  2. Android手机尺寸相关概念
  3. java程序员发展_超详细的Java程序员职业发展路径,值得深思!
  4. 创业初期,教你迅速组建优秀的创业团队
  5. php 判断句号位置,句号(。 )【以及相关问题搜集】
  6. java中将秒转化为几小时几分钟几秒的方法
  7. Python自动化运维—Paramiko实验(思科)
  8. u盘安装linux kickstart,用U盘自动化安装CentOS
  9. 关于我使用vue-quill-editor遇到的一些“坑”
  10. 自动驾驶控制算法——老王Carsim_Simulink环境搭建步骤