SQL中EXISTS使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中EXISTS使用相关的知识,希望对你有一定的参考价值。

EXISTS的作用和IN一样,判断是否包含

建立两张表,第一张T_USER表,如下:

技术分享

第二张,T_DEP表,表结构如下:

技术分享

两张表结构,都非常简单,没有添加约束

此时执行下列SQL:

select *
from t_user  u
where exists( select 1 from t_dep  d where u.depno = d.id)

得到如下结果:

技术分享

等同于使用IN:

select *
from t_user  u
where u.depno in ( select d.id from t_dep  d)

可以这样来理解,先执行 select * from t_user 得到记录之后,再依次去判断该记录是否存在EXISTS的条件中。

而且不管select 1 换成那个字段,都不影响结果。

查阅的值,数据较多的时候,使用EXISTS的效率表IN的效率要高。因为IN无视索引。

 

以上是关于SQL中EXISTS使用的主要内容,如果未能解决你的问题,请参考以下文章

当不使用 EXISTS 引入子查询时,选择列表中只能指定一个表达式。 - SQL 服务器

SQL语句中exists/not exists的用法分析

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

SQL中EXISTS和IN的区别?

使用 FOR ALL ENTRIES 和 NOT EXISTS 的 SQL 语句不正确

sql面试题_SQl优化技巧_1注意通配符中like的使用,百分号放后面_2避免在where子句中对字段进行函数操作_3在子查询当中,尽量用exists代替in_4where子句中尽量不要使用(代码片