SQL EXISTS 演算子
SQL EXISTS 演算子
EXISTS 演算子はサブクエリでレコードの存在をテストするために使用されます。
サブクエリが1つ以上のレコードを返す場合、EXISTS 演算子は TRUE を返します。
EXISTS 構文
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);デモデータベース
以下は、Northwind サンプルデータベースの “Products” テーブルからの選択です:
| ProductID | ProductName | SupplierID | CategoryID | Unit | Price | 
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 | 
| 2 | Chang | 1 | 1 | 24 – 12 oz bottles | 19 | 
| 3 | Aniseed Syrup | 1 | 2 | 12 – 550 ml bottles | 10 | 
| 4 | Chef Anton’s Cajun Seasoning | 2 | 2 | 48 – 6 oz jars | 22 | 
| 5 | Chef Anton’s Gumbo Mix | 2 | 2 | 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 | Tokyo | 100 | Japan | 
SQL EXISTS の例
以下の SQL 文は、商品の価格が20未満のサプライヤーをリストアップし、TRUE を返します:
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.SupplierID AND Price < 20);以下の SQL 文は、商品の価格が22と等しいサプライヤーをリストアップし、TRUE を返します:
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE Products.SupplierID = Suppliers.SupplierID AND Price = 22);