MySQL4.1のEXISTSに関するドキュメントが紛らわしい件

2013-08-28

MySQL4.1のEXISTSに関するドキュメントが大変紛らわしいのです。

サブクエリで値がまったく返らない場合、EXISTS <subquery> は TRUE になり、NOT EXISTS <subquery> はFALSE になります。 次に例を示します。

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

http://dev.mysql.com/doc/refman/4.1/ja/exists-and-not-exists-subqueries.html

これだと、まるで、

  • EXISTS ・・・サブクエリで値が返らない場合、TRUE
  • NOT EXISTS・・サブクエリで値が返る場合、TRUE

のようです。

※もちろん、実際には

  • EXISTS ・・・サブクエリで値が返らない場合、FALSE
  • NOT EXISTS・・サブクエリで値が返る場合、FALSE

という動きをします。

 

MySQL5.1のドキュメントでは

もしサブクエリが行を返せば、EXISTS subquery は TRUE で、NOT EXISTS subquery は FALSE です。例:

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2);

のように変更されているので、誤訳だったのでしょう。

※原文は4.1, 5.1ともに同じ文章です。