1、 EXISTS 的语法

语法: EXISTS subquery

参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。

结果类型: Boolean 如果子查询包含行,则返回 TRUE ,否则返回 FLASE 。

说明: EXISTS (包括 NOT EXISTS) 子句的返回值是一个 BOOL 值。 EXISTS 内部有一个子查询语句 (SELECT ... FROM...), 我将其称为 EXIST 的内查询语句。其内查询语句返回一个结果集。 EXISTS 子句根据其内查询语句的结果集空或者非空,返回一个布尔值。

2、IN () 和 EXISTS () 语句内部工作原理

2.1 IN () 语句内部工作原理

2.2 EXISTS () 语句内部工作原理

2.3 各自适用场景

  • 当 A 表数据与 B 表数据一样大时,in 与 exists 效率差不多,可任选一个使用。
  • 通常情况下采用 exists 要比 in 效率高,因为 IN 不走索引。但要看实际情况具体使用:
    • IN 适合于外表大而内表小的情况;
    • EXISTS 适合于外表小而内表大的情况。

3、如何使用

3.1 使 IN () 和 EXISTS () 有相同作用

很多时候用 exists 代替 in 是一个好的选择:

select num from a where num in(select num from b)
用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)

4、参考

  1. in 和 exist 区别 - lick4050312 的专栏 - CSDN 博客

    注:特别清晰,包括 IN 和 EXISTS 的区别,各自适用场景,以及 EXISTS 字段的详细解析。
  2. SQL 中 EXISTS 的用法 - Dsw - 博客园

    注:具体语法和用法说的很详细。
  3. SQL查询中in和exists的区别分析 - 简书

    注:具体语句执行内部原理,很详细。
  4. sql 中 exists,not exists 的用法 - 飞翔 - 方向 积累 沉淀 - 博客园

【MySQL】IN 的学习,以及和 EXISTS的区别的更多相关文章

  1. MySQL 定时器EVENT学习

    原文:http://blog.csdn.net/lifuxiangcaohui/article/details/6583535 MySQL 定时器EVENT学习 MySQL从5.1开始支持event功 ...

  2. MYSQL视图的学习笔记

    MYSQL视图的学习笔记,学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆 课程笔记的综合. 视图及图形化工具   1.       视图的定义 视图就是从一个或多个表中,导出来的表,是一个虚 ...

  3. mySQl数据库的学习笔记

    mySQl数据库的学习笔记... ------------------ Dos命令--先在记事本中写.然后再粘贴到Dos中去 -------------------------------- mySQ ...

  4. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  5. 【笔记】MySQL的基础学习(二)

    [笔记]MySQL的基础学习(二) MySQL 老男孩  一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...

  6. 《Mysql 公司职员学习篇》 第二章 小A的惊喜

          第二章 小A的惊喜  ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...

  7. (转)MySQL中In与Exists的区别

    背景:总结mysql相关的知识点. 如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件. select * from user where exists s ...

  8. MySQL中实现DROP USER if EXISTS `test`,即创建新用户时检测用户是否存在

    MySQL中实现DROP USER if EXISTS `test`,即创建新用户时检测用户是否存在    版权声明:本文为博主原创文章,欢迎大家转载,注明出处即可.有问题可留言,会尽快回复,欢迎探讨 ...

  9. 13本热门书籍免费送!(Python、SpingBoot、Entity Framework、Ionic、MySQL、深度学习、小程序开发等)

    七月第一周,网易云社区联合清华大学出版社为大家送出13本数据分析以及移动开发的书籍(Python.SpingBoot.Entity Framework.Ionic.MySQL.深度学习.小程序开发等) ...

随机推荐

  1. xlrd/xlwt

    操作 xls格式的excel文件 读模块 xlrd import xlrd 打开文件 wb= xlrd.open_workbook('xxxx.xls') 获取excel中的表 ws= wb.shee ...

  2. leetcode解题报告(21):Majority Element

    描述 Given an array of size n, find the majority element. The majority element is the element that app ...

  3. Poj 2104 K-th Number(主席树&&整体二分)

    K-th Number Time Limit: 20000MS Memory Limit: 65536K Case Time Limit: 2000MS Description You are wor ...

  4. P2637 第一次,第二次,成交!

    题目描述 因为奶牛们的节食运动(奶牛还节食?)给农夫JOHN余下了一大批干草无法处理,所以他准备要开一个拍卖会去出售他的干草.他有N(1<=N<=1000)批干草(每批大约100捆).他的 ...

  5. 带你了解HTTP协议(一)

    本篇文章篇幅比较长,先来个思维导图预览一下.   一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层   计算机网络体系结构分层 2.TCP/IP 通信传输流 利用 TCP/IP 协议族进行 ...

  6. 时隔五年,Scrapyd 终于原生支持 basic auth

    Issue in 2014 scrapy/scrapyd/issues/43 Pull request in 2019 scrapy/scrapyd/pull/326 试用 1. 安装: pip in ...

  7. lucene正向索引(续)——一个文档的所有filed+value都在fdt文件中!!!

    4.1.3. 域(Field)的数据信息(.fdt,.fdx) 域数据文件(fdt): 真正保存存储域(stored field)信息的是fdt文件 在一个段(segment)中总共有segment ...

  8. 为centos7配置阿里yum源遇到的问题以及解决方法

    [问题背景] 卸载安装的Ambari,之前都是因为卸载不干净.这次重写安装,卸载完之后,发现httpd无法启动,所以想卸载httpd进行重新安装,但是执行命令yum list | grep httpd ...

  9. TripleDES加解密Java、C#、php

    TripleDES说明:     TripleDES(3Des)和Des都是对称加密算法,TripleDes是Des加密算法的增强版本,这里主要说的是TripleDes加密算法的应用.     工作中 ...

  10. Cesium中常用的一些地理数据文件 以及数据相关的东西

    KML Cesium.KmlDataSource.load CZML Cesium.CzmlDataSource.load GeoJson Cesium.GeoJsonDataSource.load ...