|
|
|
|
複数の値の候補を指定する(IN、ANY、SOME、ALL) |
|
スポンサード リンク
複数の値の候補を検索条件に指定するには以下のようになります。
[NOT] IN (検索リスト) |
検索リストで指定した値のどれか1つと一致するレコードを検索します。 |
[NOT] 比較演算子 ANY (検索リスト)
[NOT] 比較演算子 SOME (検索リスト) |
検索リストで指定した値のどれか1つと比較して、一致したレコードを検索します。比較に指定する演算子は=、!=、>、<、<=、>=のいずれか。 |
[NOT] 比較演算子 ALL (検索リスト) |
検索リストで指定した値の全てと比較して、一致したレコードを検索します。比較に指定する演算子は=、!=、>、<、<=、>=のいずれか。 |
IN句を使用するより、EXISTS句を使用する方が、パフォーマンスが大幅に改善されることがあるので、IN句を使用するときは、EXISTS句で代替することも検討しましょう。詳細はチューニングを参照。
例1) 列「job_id」が'JOB001'または'JOB003'のレコードを検索する(IN)
|
select *
from employees
where
job_id in ('JOB001','JOB003') |
= ANY (検索リスト) と同じになる
例2) 列「job_id」に'JOB001'と'JOB003'のいずれも一致しないレコードを検索する(NOT IN)
|
select *
from employees
where
job_id not in ('JOB001','JOB003') |
!= ALL と同じ
例3) 列「salary」が1000もしくは2000以上のレコードを検索する(ANY)
|
select *
from employees
where
salary >= any (1000,2000) |
例4) 列「salary」が1000と2000のいずれよりも大きいレコードを検索する(ALL)
|
select *
from employees
where
salary >= all (1000,2000) |
例5) 表「job_mst」の列「job_kbn」が'1'のレコードの列「job_id」のいずれかに一致するレコードを表「employees」から検索する(副問合せ)
|
select *
from employees
where
job_id in (select job_id from job_mst where job_kbn = '1') |
検索リストは副問合せによる指定も可能。ANY、SOME、ALLも同様
スポンサード リンク
|
|
|
|
|