当前位置: 首页 > news >正文

MYSQL in和exists

目录

一、in

二、exists

三、区别


一、in

解释:in 进行子查询时,内层语句仅返回一个数据列,数据列的值提供给外层语句进行比较操作。

语法格式:select * from table_1 where id in (select id from table_2 );

中文注释:select * from 表名 where 字段 in (子查询/结果集);

用法:

select * from table_1 where id in (select id from table_2 where name = '张三');

二、exists

解释:exists的右操作数是一个子查询,这个子查询是用来做存在性检查的,若子查询的行存在结果,即子查询能够找到匹配的记录,exists的结果为ture,否则为false。
使用EXISTS时,若子查询有结果,则返回true,外表能够提取查询数据。
使用NOT EXISTS时,若子查询找不到匹配记录,则返回true,外表能够提取查询数据。

语法格式:select * from table_1 where  exists (select 1 from table_2 where  table_1.id=table_2.id);

中文注释:select * from 表名 where  exists (子查询条件筛选);

用法:

select * from table_1 where  exists (select 1 from table_2 where  table_1.id=table_2.id)

三、区别

1、 IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况;内外表一样,用那个都行。

2、使用IN时,IN不对NULL进行处理,exists会对NULL进行处理。

3、in可以走索引,但数据量过大就不走索引,not in、exist、not exists也都可以走索引,但数据库版本不同也会有区别,最好是测试一下

4、exists,not exists一般是与子查询使用;in,not in可以与子查询使用,也可以直接in ('a','b',......,'结果集')。

相关文章:

  • Spark日志有哪些?
  • 【接口自动化测试】第二节.Requests库和接口对象封装
  • 异构集成封装类型2D、2.1D、2.3D、2.5D和3D封装技术
  • 注意力机制新突破!21种创新融合思路汇总!让技术持续飞跃!
  • C# —— while循环语句
  • C++ day5
  • Perl语言快速入门学习
  • php配合fiddler批量下载淘宝天猫商品数据分享
  • 探索 JQuery EasyUI:构建简单易用的前端页面
  • 服务器数据恢复—热备盘未完全启用导致raid5阵列崩溃的数据恢复案例
  • 如何在服务器上部署一个java程序
  • 电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法
  • Linux C++
  • 图卷积网络(Graph Convolutional Network, GCN)
  • 一文详解扩散模型
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 77. Combinations
  • Android Studio:GIT提交项目到远程仓库
  • create-react-app项目添加less配置
  • css属性的继承、初识值、计算值、当前值、应用值
  • ES6 学习笔记(一)let,const和解构赋值
  • Java知识点总结(JavaIO-打印流)
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • MySQL-事务管理(基础)
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • node入门
  • React16时代,该用什么姿势写 React ?
  • swift基础之_对象 实例方法 对象方法。
  • 回顾2016
  • 前嗅ForeSpider中数据浏览界面介绍
  • 试着探索高并发下的系统架构面貌
  • 手写一个CommonJS打包工具(一)
  • 一些css基础学习笔记
  • 由插件封装引出的一丢丢思考
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • (day 12)JavaScript学习笔记(数组3)
  • (Note)C++中的继承方式
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (含笔试题)深度解析数据在内存中的存储
  • (十五)、把自己的镜像推送到 DockerHub
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • .bat批处理(六):替换字符串中匹配的子串
  • .form文件_一篇文章学会文件上传
  • .net Application的目录
  • .NET Core Web APi类库如何内嵌运行?
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Core中的时区转换问题
  • .NET DataGridView数据绑定说明
  • .NET Micro Framework初体验(二)
  • .NetCore发布到IIS