MySQL 速習チュートリアル

MySQL ALL 演算子

1. MySQL ALL 演算子の概要

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

この ALL 演算子は、サブクエリの結果セットに含まれるすべての値が条件を満たしている場合にのみ TRUE と評価されます。逆に言えば、一つでも条件に合致しない値があれば FALSE になる、なかなか厳格なバリデーターのような挙動をします。

一般的には WHERE 句や HAVING 文とともに利用されることが多い演算子です。

2. ALL の基本構文

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

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

3. デモ用データベース

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

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

次に、「OrderDetails(注文詳細)」テーブルの抜粋です。

OrderDetailIDProductIDQuantity
11112
24210
3725
4149

4. MySQL ALL の使用例

次の SQL は、「OrderDetails」テーブル内のすべてのレコードにおいて数量(Quantity)が 10 である場合にのみ、ProductName を返します。

-- サブクエリが返す「すべての数量」が 10 と一致するかを判定します
SELECT ProductName FROM Products
WHERE ProductID = ALL (
  SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10
);