WHERE EXISTS (SELECT * FROM テーブルB WHERE 条件)のように作成する時

ねこもち
2014-04-23 18:29 1675 1
一般的に

SELECT 列
FROM テーブルA
WHERE EXISTS (SELECT * FROM テーブルB WHERE 条件)

というクエリですが、WHERE EXISTSのサブクエリのSELECTは*でいいのでしょうか?
結果に一つでも値があれば(NULLじゃなければ?)
TRUEが返るのであれば、NULLが入らない主キーのみを
選択すればいいのではないのでしょうか?

コメント

2014年 05月 09日 (16:18)
こんにちは。
イノ(inno)です。

そうですね。EXISTSの場合、該当するデータが1件でも存在すればTrueを返します。
ですので、
WHERE EXISTS (SELECT * FROM テーブルB WHERE 条件)
よりは
WHERE EXISTS (SELECT TOP 1 1 FROM テーブルB WHERE 条件)
にした方がいいです。
TOP 1 : 1件のみ取得する意味で、その後の「1」はカラム名の代わりです。
個人的には「SELECT TOP 1 1 FROM」このままつかってWHERE EXISTS (SELECT TOP 1 1 FROM テーブルB WHERE 条件)で記述します。
よろしくお願い致します。