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文は、全ての列を返すことを意味するワイルドカードを使っていることに注意してください。一致するレコードがあるかどうかだけに関心があり、列の具体的な値には興味がないので、ワイルドカードを使用しています。

bannerAds