1. 程式人生 > >SQL中EXISTS使用

SQL中EXISTS使用

sel eight tro exist cnblogs 而且 記錄 依次 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使用