首页 > 代码库 > SQL中EXISTS使用

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使用