加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql中exists和in区别是什么?怎么运用?

发布时间:2023-04-08 14:23:52 所属栏目:MsSql教程 来源:
导读:sql中exists和in的区别区别是什么?有些新手对于exists和in的区别并不是很清楚,其实exists和in的区别是很小的,但是两者还是存在一些不同,下面我们一起来了解一下。

exists和in的区别很小,几乎可以等价
sql中exists和in的区别区别是什么?有些新手对于exists和in的区别并不是很清楚,其实exists和in的区别是很小的,但是两者还是存在一些不同,下面我们一起来了解一下。
 
       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,效率高。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章