- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サブクエリ 述語のTrue/False)
サブクエリ 述語のTrue/False
このQ&Aのポイント
- サブクエリの勉強をしていますが、「TRUE」と「FALSE」の評価について理解できません。例えば、「EXISTS」はサブクエリの結果が1行でもあれば「TRUE」となるのでしょうか?詳しい説明をお願いします。
- サブクエリにおいて、述語の「TRUE」と「FALSE」の評価について理解できません。例えば、「EXISTS」はサブクエリの結果が1行でもあれば「TRUE」となるのでしょうか?詳しい説明をお願いします。
- サブクエリについて勉強していますが、「TRUE」と「FALSE」の評価について理解できません。例えば、「EXISTS」はサブクエリの結果が1行でもあれば「TRUE」となるのでしょうか?詳しい説明をお願いします。
- みんなの回答 (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 と同じ結果が得られます。結果は同じですが、実行計画は異なりますので、応答時間とかは違ってくると思いますが。
お礼
なんと!とてもよく理解できました!ご回答ありがとうございます!