SQL ANY 演算子
1. SQL ANY 演算子の概要
ANY 演算子は、ある値をサブクエリによって返されたすべての値と比較するために使用されます。
ANY 演算子は、サブクエリのリザルトセット内の少なくとも 1 つの値が条件を満たす場合に TRUE と評価されます。
2. ANY の構文
SELECT カラム名(s)
FROM テーブル名
WHERE カラム名 演算子 ANY (サブクエリ); 注意:演算子 は、標準的な比較演算子(=、<>、!=、>、>=、<、または <=)である必要があります。
3. デモ用データベース
以下は、Northwind サンプルデータベースの「Products(製品)」テーブルからの抜粋です。
| ProductID | ProductName | Price |
|---|---|---|
| 1 | Chais | 18.00 |
| 2 | Chang | 19.00 |
| 3 | Aniseed Syrup | 10.00 |
| 4 | Chef Anton's Cajun Seasoning | 22.00 |
こちらは「OrderDetails(注文詳細)」テーブルの抜粋です。
| OrderDetailID | ProductID | Quantity |
|---|---|---|
| 1 | 11 | 12 |
| 2 | 42 | 10 |
| 3 | 72 | 5 |
| 4 | 14 | 9 |
4. SQL ANY の使用例
4.1 Quantity が 10 に等しい場合
次の SQL は、「OrderDetails」テーブルに Quantity(数量)が 10 に等しいレコードが ANY(いずれか)存在する場合に、ProductName を返します(Quantity カラムには 10 という値が含まれているため、これは TRUE を返します)。
SELECT ProductName FROM Products
WHERE ProductID = ANY (
SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10
);4.2 Quantity が 99 より大きい場合
次の SQL は、「OrderDetails」テーブルに Quantity が 99 より大きいレコードが ANY 存在する場合に、ProductName を返します(Quantity カラムには 99 より大きい値が存在するため、これは TRUE を返します)。
SELECT ProductName FROM Products
WHERE ProductID = ANY (
SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99
);4.3 Quantity が 1000 より大きい場合
次の SQL は、「OrderDetails」テーブルに Quantity が 1000 より大きいレコードが ANY 存在する場合に、ProductName を返します(Quantity カラムには 1000 より大きい値が存在しないため、これは FALSE を返します)。
SELECT ProductName FROM Products
WHERE ProductID = ANY (
SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000
);