Sql exists和in的区别(SQL中IN和EXISTS用法的区别)

2023-11-29 02:50:02 :34

sql exists和in的区别(SQL中IN和EXISTS用法的区别)

大家好,如果您还对sql exists和in的区别不太了解,没有关系,今天就由本站为大家分享sql exists和in的区别的知识,包括SQL中IN和EXISTS用法的区别的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

SQL中IN和EXISTS用法的区别

IN表示条件是在一个集合里,比如

in (’A’,’B’,’C’,’D’)

条件就是在ABCD这个集合里找。

EXISTS返回的是一个布尔值,也就是它判断的是真假,比如

 EXISTS (select * from 用户表 where 姓名=’张三’)

表示:有张三这个用户则返回“真”,否则返回“假”

sql server中not in,in与not exists,exists有什么不同

我给你举几个例子你感受一下。

(1)select * from student where class not in (’1’,’2’,’3’)

查询班级不在1,2,3的学生信息

(2))select * from student where class in (’1’,’2’,’3’)

查询班级在1,2,3的学生信息

in和not in的用法,更多会出现在子查询中,

例如 select * from student where sno in (select sno from Exam where course =’English’)  查询参加了英语考试的学生信息。

(3)exists 更多时候出现在if判断中, 它只做一个是或否的判断,例如如果存在birthday=今天的学生,那么就把他的age+1

if exists (select 1 from student where birthday=getdate())BEGINupdate student set age=age+1 where birthday=getdate()ENDelse select N’今天没有同学过生日’

sql中in和exists的区别效率问题 转

in和existsin 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:例如:表A(小表),表B(大表)1:select * from A where cc in (select cc from B)效率低,用到了A表上cc列的索引;select * from A where exists(select cc from B where cc=A.cc)效率高,用到了B表上cc列的索引。相反的2:select * from B where cc in (select cc from A)效率高,用到了B表上cc列的索引;select * from B where exists(select cc from A where cc=B.cc)效率低,用到了A表上cc列的索引。not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。in 与 =的区别select name from student where name in (’zhang’,’wang’,’li’,’zhao’);与select name from student where name=’zhang’ or name=’li’ orname=’wang’ or name=’zhao’的结果是相同的。转的***隐藏网址***

数据库sql语句中为什么exists关键字 要比 in 关键字执行效率高

exists是根据子查询有无记录返回确定条件是否成立,如果有记录返回,条件成立,如果子查询未返回记录,条件不成立,不对子查询结果进行匹配,所以速度较快;in要对子查询返回的结果用in关键字前面的值逐个进行匹配,如果匹配成功条件成立,匹配不成功条件不成立,所以速度较慢。

如果你还想了解更多这方面的信息,记得收藏关注本站。

sql exists和in的区别(SQL中IN和EXISTS用法的区别)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.