详解sql中exists和in的语法与区别_MsSql

来源:脚本之家  责任编辑:小易  

exists和in的区别很小,几乎可以等价,但是sql优化中往往会注重效率问题,今天咱们就来说说exists和in的区别。
exists语法:
select … from table where exists (子查询)
将主查询的结果,放到子查询结果中进行校验,如子查询有数据,则校验成功,那么符合校验,保留数据。

create table teacher
(
tid int(3),
tname varchar(20),
tcid int(3)
);
insert into teacher values(1,'tz',1);
insert into teacher values(2,'tw',2);
insert into teacher values(3,'tl',3);

例如:

select tname from teacher exists(select * from teacher);

此sql语句等价于select tname from teacher
(主查询数据存在于子查询,则查询成功(校验成功))

此sql返回为空,因为子查询并不存在这样的数据。
in语法:
select … from table where 字段 in (子查询)

select ..from table where tid in (1,3,5) ;
select * from A where id in (select id from B);

区别:
如果主查询的数据集大,则使用in;
如果子查询的数据集大,则使用exists;
例如:

select tname from teacher where exists (select * from teacher);

这里很明显,子查询查询所有,数据集大,使用exists,效率高。

select * from teacher where tname in (select tname from teacher where tid = 3);

这里很明显,主查询数据集大,使用in,效率高。

到此这篇关于sql中exists和in的语法与区别的文章就介绍到这了,更多相关sql中exists和in语法区别内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:MySQL exists 和in 详解及区别mySQL中in查询与exists查询的区别小结安装mysql出错”A Windows service with the name MySQL already exists.“如何解决MYSQL IN 与 EXISTS 的优化示例介绍SQL查询中in和exists的区别分析mysql insert if not exists防止插入重复记录的方法

  • 本文相关:
  • 教你怎么使用sql游标实例分享
  • sqlserver2000 报1053错误(服务没有及时响应或控制请求)的解决方
  • sql 查询性能优化 解决书签查找
  • 图解ssis批量导入excel文件的实现方法
  • 五种sql server分页存储过程的方法及性能比较
  • sql sever中使用sql语句实现把重复行数据合并为一行并用逗号分隔
  • sqlserver查询所有数据库名,表名,和字段名的语句
  • mssql 多字段根据范围求最大值实现方法
  • sql 特殊语句(学习笔记)
  • sql server中将查询结果转换为json格式脚本分享
  • 如何理解mssql中的not exists
  • mysql怎么实现mssql的if exists begin.end功能
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysql exists 和in 详解及区别mysql中in查询与exists查询的区别小结安装mysql出错”a windows service with the name mysql already exists.“如何解决mysql in 与 exists 的优化示例介绍sql查询中in和exists的区别分析mysql insert if not exists防止插入重复记录的方法教你怎么使用sql游标实例分享sqlserver2000 报1053错误(服务没有及时响应或控制请求)的解决方sql 查询性能优化 解决书签查找图解ssis批量导入excel文件的实现方法五种sql server分页存储过程的方法及性能比较sql sever中使用sql语句实现把重复行数据合并为一行并用逗号分隔sqlserver查询所有数据库名,表名,和字段名的语句mssql 多字段根据范围求最大值实现方法sql 特殊语句(学习笔记)sql server中将查询结果转换为json格式脚本分享sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据win7系统安装sqlserver2000的详细sql重复记录查询的几种方法sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sql server全文索引服务sql server dba日常检查常用sqlsqlserver中的切割字符串splitstring函数查询表中某字段有重复记录个数的方法sql server的 update from 语句的深究sqlserver2000 数据库备份实例代码sqlserver恢复表级数据详解删除sqlserver数据库日志和没有日志的数据在sqlserver中如何使用cte解决复杂查询问sql server中row_number分页查询的用法详
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved