existsの使い方
1616 ワード
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戻り結果セットが真)
例
ヒント
分析の結果:INは外見が大きくて内表が小さい場合に適している.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は、見た目が小さくて中身が大きい場合に適しています.