existsの使い方


existsの概要
EXISTSは,inと同様に存在するか否かを判断するが,効率はinよりも高く,結果セットを返すか否かを強調し,何を返すかを知る必要はない.
たとえば、select name from student where sex=‘m’and mark exists(select 1 from grade where...)は、existsが導く句が結果セットで返される限り、existsという条件が成立する
not existsとnot inはそれぞれexistsとinの対立面である.
exists(sql戻り結果セットが真)not exists(sql戻り結果セットが真)
--exists
SELECT * FROM HB_TQB_DETAIL a WHERE a.status=1  AND EXISTS(SELECT * FROM t_blacklist b WHERE  a.pn=b.userphoneno AND status=1 )

--not exists
SELECT * FROM HB_TQB_DETAIL a WHERE a.status=1  AND NOT EXISTS(SELECT * FROM t_blacklist b WHERE  a.pn=b.userphoneno AND status=1 )

ヒント
分析の結果:INは外見が大きくて内表が小さい場合に適している.EXISTSは、見た目が小さくて中身が大きい場合に適しています.