ANY句とSOME句は指定した値と副問合せの結果を比較するときに使用します.このとき,比較演算子の条件が一つでも真になるとき真,条件がすべて偽になるとき偽になります.なお,ANY句とSOME句は名前が異なるだけで等価です.
ANY句を用いた副問合せの書き方は以下とおりです.
SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 列名 比較演算子 IN (
SELECT 列名
FROM テーブル名
[WHERE 条件式など]
)
比較演算子には =,<, >, <=, >=, <>,!= が指定できます.
例としてANY句を使用して受注テーブルからレコードを抽出します.
受注
注文番号 | 商品コード | 受注個数 |
---|---|---|
01-101 | A001 | 100 |
01-102 | A002 | 200 |
01-103 | B001 | 300 |
01-104 | B002 | 400 |
02-101 | A001 | 150 |
02-102 | A002 | 350 |
SQL
SELECT * FROM 受注
WHERE 受注個数 > ANY (
SELECT 受注個数
FROM 受注
WHERE 商品コード = 'A002' (
)
結果
注文番号 | 商品コード | 受注個数 |
---|---|---|
01-103 | B001 | 300 |
01-104 | B002 | 400 |
02-102 | A002 | 350 |
まず副問合せによって受注テーブルの受注個数 (200, 350) が返されます. 次にANY句によって,受注個数が200よりも大きいか,または350よりも大きいレコードを抽出します. すなわちこの場合,受注個数が200よりも大きいレコードが抽出されます.