サブクエリで値がまったく返らない場合、EXISTS
          <subquery> は TRUE
          になり、NOT EXISTS <subquery> は
          FALSE になります。
          次に例を示します。
        
SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);
          従来、EXISTS サブクエリは
          SELECT *
          で開始しますが、SELECT 5 や
          SELECT column1
          などのように、どのように開始してもかまいません。このようなサブクエリ内の
          SELECT リストは MySQL
          で無視されるため、重要ではありません。
        
          上の例で、t2
          にレコードが含まれていれば、たとえそのレコードに含まれている値が
          NULL
          であっても、EXISTS 条件は
          TRUE
          になります。しかし、この例は現実的ではありません。なぜなら、ほとんどの場合、[NOT]
          EXISTS
          サブクエリには相関が含まれるためです。
          次に、より現実に即した例をいくつか示します。
        
例: 1 つ以上の都市に存在するのは、どの種類の店舗ですか。
SELECT DISTINCT store_type FROM Stores
  WHERE EXISTS (SELECT * FROM Cities_Stores
                WHERE Cities_Stores.store_type = Stores.store_type);
例: どの都市にも存在しないのは、どの種類の店舗ですか。
SELECT DISTINCT store_type FROM Stores
  WHERE NOT EXISTS (SELECT * FROM Cities_Stores
                    WHERE Cities_Stores.store_type = Stores.store_type);
例: すべての都市にも存在するのは、どの種類の店舗ですか。
SELECT DISTINCT store_type FROM Stores S1
  WHERE NOT EXISTS (
    SELECT * FROM Cities WHERE NOT EXISTS (
      SELECT * FROM Cities_Stores
       WHERE Cities_Stores.city = Cities.city
       AND Cities_Stores.store_type = Stores.store_type));
          最後の例は、二重にネストされた NOT
          EXISTS
          クエリです。このクエリでは、NOT
          EXISTS 内にさらに NOT EXISTS
          節が含まれています。形式的には、このクエリは
          ``Stores
          に存在しない店舗が含まれる都市は存在するか''
          という疑問に答えるものですが、むしろ、ネストされている
          NOT EXISTS によって、``x
          はすべての y に対して TRUE か''
          という疑問の答えが得られると言ったほうが簡単です。
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

