加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql中exists和in差别是什么 怎么使用

发布时间:2023-06-21 13:01:53 所属栏目: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,效率高。

(编辑:银川站长网)

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

    推荐文章