NOT EXISTS演算子を使用したSQL
NOT EXISTSは、SQLにおける条件演算子で、サブクエリ結果セットが空かどうかを検査するものです。構文は以下の通りです。
SELECT column1, column2, ...
FROM table1
WHERE NOT EXISTS (子查询)
サブクエリは任意の有効なSELECT文であればかまいません。サブクエリが返す結果セットが空の場合、NOT EXISTSは真を返し、それ以外の場合は偽を返します。
具体例の使用:
顧客と注文の 2 つのテーブルがあるとします。注文していない顧客を見つける場合、NOT EXISTS を使用できます。
SELECT CustomerName
FROM Customers
WHERE NOT EXISTS (SELECT * FROM Orders WHERE Customers.CustomerID = Orders.CustomerID);
注文をしていない顧客の名前をすべて返します。
このクエリでは、サブクエリの「SELECT * FROM Orders WHERE Customers.CustomerID = Orders.CustomerID」は、OrdersテーブルにCustomersテーブルのCustomerIDと一致するレコードがあるかどうかをチェックしています。一致するレコードがなければ、NOT EXISTSは真を返し、WHERE句の条件を満たし、その顧客の名前が返されます。
サブクエリ内のSELECT文は、全ての列を返すことを意味するワイルドカードを使っていることに注意してください。一致するレコードがあるかどうかだけに関心があり、列の具体的な値には興味がないので、ワイルドカードを使用しています。