SQL EXISTS 演算子
1. SQL EXISTS 演算子
EXISTS 演算子は、WHERE 句の中で使用され、サブクエリ(副問合せ)がレコードを返すかどうかを確認するために利用されます。
サブクエリが少なくとも 1 つのレコードを返す場合、EXISTS 演算子は TRUE と評価され、それ以外の場合は FALSE と評価されます。
1.1 EXISTS の構文
SELECT カラム名(s)
FROM テーブル名
WHERE EXISTS (サブクエリ);2. デモ用データベース
以下は、Northwind サンプルデータベースの「Products(製品)」テーブルからの抜粋です。
| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
| 4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22.00 |
| 5 | Chef Anton's Gumbo Mix | 2 | 3 | 36 boxes | 21.35 |
こちらは「Suppliers(仕入先)」テーブルの抜粋です。
| SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | London | EC1 4SD | UK |
| 2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
| 3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
| 4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai | Musashino-shi | 100 | Japan |
3. SQL EXISTS の使用例
次の SQL は、価格が 10 未満の製品を扱っている仕入先が存在するかを確認します。サブクエリが TRUE と評価された場合、その製品価格が 10 未満である仕入先をリストアップします。
実行例:
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (
SELECT ProductName
FROM Products
WHERE Products.SupplierID = Suppliers.supplierID AND Price < 10
);次の SQL は、価格が 22 に等しい製品を扱っている仕入先が存在するかを確認します。サブクエリが TRUE と評価された場合、その製品価格が 22 である仕入先をリストアップします。
実行例:
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (
SELECT ProductName
FROM Products
WHERE Products.SupplierID = Suppliers.supplierID AND Price = 22
);