• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サブクエリ 述語のTrue/False)

サブクエリ 述語のTrue/False

このQ&Aのポイント
  • サブクエリの勉強をしていますが、「TRUE」と「FALSE」の評価について理解できません。例えば、「EXISTS」はサブクエリの結果が1行でもあれば「TRUE」となるのでしょうか?詳しい説明をお願いします。
  • サブクエリにおいて、述語の「TRUE」と「FALSE」の評価について理解できません。例えば、「EXISTS」はサブクエリの結果が1行でもあれば「TRUE」となるのでしょうか?詳しい説明をお願いします。
  • サブクエリについて勉強していますが、「TRUE」と「FALSE」の評価について理解できません。例えば、「EXISTS」はサブクエリの結果が1行でもあれば「TRUE」となるのでしょうか?詳しい説明をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jicchi2
  • ベストアンサー率27% (5/18)
回答No.1

この場合の SELECT * FROM 商品表 AS 商品表A WHERE EXISTS (SELECT * FROM 商品表 AS 商品表B WHERE 商品名 = 'BEER'); は、サブクエリの商品表Bに商品名がBEERのレコードがあれば、商品表Aのすべての行を抽出しなさい。 なので、このSQLでは商品表にBEERがあれば、BEERも含めてすべてのレコードが抽出されるし、BEERがなければ、1行も抽出されません。 > これは1行でも結果が帰ってきたら、それはTRUEとみなされて、EXISITSはサブクエリをTRUEと評価するということでしょうか? 正しいです。1行でも見つかったらTRUEです。 EXISTS (SELECT * FROM 商品表 WHERE 商品名 = 'BEER') は (SELECT COUNT(*) FROM 商品表 WHERE 商品名 = 'BEER') > 0 と同じ結果が得られます。結果は同じですが、実行計画は異なりますので、応答時間とかは違ってくると思いますが。

mellow91
質問者

お礼

なんと!とてもよく理解できました!ご回答ありがとうございます!

関連するQ&A