SQL 速習チュートリアル

SQL ANY 演算子

1. SQL ANY 演算子の概要

ANY 演算子は、ある値をサブクエリによって返されたすべての値と比較するために使用されます。

ANY 演算子は、サブクエリのリザルトセット内の少なくとも 1 つの値が条件を満たす場合に TRUE と評価されます。

2. ANY の構文

SELECT カラム名(s)
FROM テーブル名
WHERE カラム名 演算子 ANY (サブクエリ);

       注意:演算子 は、標準的な比較演算子(=<>!=>>=<、または <=)である必要があります。

3. デモ用データベース

以下は、Northwind サンプルデータベースの「Products(製品)」テーブルからの抜粋です。

ProductIDProductNamePrice
1Chais18.00
2Chang19.00
3Aniseed Syrup10.00
4Chef Anton's Cajun Seasoning22.00

こちらは「OrderDetails(注文詳細)」テーブルの抜粋です。

OrderDetailIDProductIDQuantity
11112
24210
3725
4149

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
);