gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解sql中exists和in的语法与区别由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

?
1
2
3
4
5
6
7
8
9
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);

例如:

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

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

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

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

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

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

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

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

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

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

原文链接:https://blog.csdn.net/weixin_45842494/article/details/112153203 。

最后此篇关于详解sql中exists和in的语法与区别的文章就讲到这里了,如果你想了解更多关于详解sql中exists和in的语法与区别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com