7.20.8 限定述語
表副問合せの結果と値式の結果を比較して判定します。
(1) 指定形式
限定述語::=値式{=|<>|!=|^=|<|<=|>|>=}{{ANY|SOME}|ALL}表副問合せ
(2) 指定形式の説明
- 値式:
-
限定述語の評価対象列を指定します。値式の形式で指定します。値式については,「7.21 値式」を参照してください。
- ANYまたはSOME:
-
表副問合せの結果の任意の行のうち,値式との比較条件を満たしている行が1つでもある場合は,限定述語の結果が真になります。
なお,ANYまたはSOMEのどちらを指定しても結果は同じになります。
- ALL:
-
次に示すどちらかの条件を満たしている場合に,限定述語の結果が真になります。
-
表副問合せの結果のすべての行が,値式との比較条件を満たしている場合
-
表副問合せの結果が0行(空集合)の場合
-
- 表副問合せ:
-
表副問合せについては,「7.3 副問合せ」を参照してください。
(3) 述語の評価
(a) ANYまたはSOMEを指定した場合
-
表副問合せの結果の任意の行のうち,値式との比較条件を満たしている行が1つでもある場合は,限定述語の結果が真になります。
-
次に示すどちらかの条件を満たしている場合は,限定述語の結果が偽になります。
-
表副問合せの結果のすべての行が,値式との比較条件を満たしていない場合
-
表副問合せの結果が0行(空集合)の場合
-
-
上記以外の場合は不定になります。
ANYまたはSOMEを指定した限定述語の結果を次の表に示します。
項番 |
表副問合せの各行に対する比較結果 |
限定述語の結果 |
|
---|---|---|---|
1 |
真の行あり |
真 |
|
2 |
真の行なし |
不定あり |
不定 |
3 |
不定なし |
偽 |
|
4 |
0行(空集合) |
偽 |
(b) ALLを指定した場合
-
次に示すどちらかの条件を満たしている場合は,限定述語の結果が真になります。
-
表副問合せの結果のすべての行が,値式との比較条件を満たしている場合
-
表副問合せの結果が0行(空集合)の場合
-
-
表副問合せの結果の任意の行のうち,値式との比較条件を満たさない行が1つでもある場合は,限定述語の結果が偽になります。
-
上記以外の場合は不定になります。
ALLを指定した限定述語の結果を次の表に示します。
項番 |
表副問合せの各行に対する比較結果 |
限定述語の結果 |
|
---|---|---|---|
1 |
偽の行あり |
偽 |
|
2 |
偽の行なし |
不定あり |
不定 |
3 |
不定なし |
真 |
|
4 |
0行(空集合) |
真 |
(4) 規則
-
表副問合せの結果の列数は1になるようにしてください。
-
値式にバイナリデータを指定した場合,比較演算子には=,<>,!=,および^=だけが指定できます。
-
値式には配列データを指定できません。
-
表副問合せの選択式の値式には配列データを指定できません。
(5) 留意事項
-
限定述語を指定した場合,作業表が作成されることがあります。作業表が作成される作業表用DBエリアの容量が正しく見積もられていない場合,性能低下の原因となることがあります。作業表用DBエリアの容量見積もりについては,マニュアルHADB システム構築・運用ガイドを参照してください。作業表の詳細については,マニュアルHADB AP開発ガイドの作業表が作成されるSQLを実行する際の考慮点を参照してください。
-
限定述語(=ANY指定または=SOME指定)を指定した場合,HADBによって表副問合せの結果の重複排除を行います。
(6) 例題
- 例題
-
顧客表(USERSLIST)と販売履歴表(SALESLIST)から,商品コード(PUR-CODE)がP001の商品を購入した顧客の情報を検索します。
SELECT * FROM "USERSLIST" WHERE "USERID"=ANY(SELECT "USERID" FROM "SALESLIST" WHERE "PUR-CODE"='P001')
下線部分が限定述語の指定です。