2011-02-02 7 views

答えて

14

EXISTSのSELECT句が評価されないため、どちらも同じ処理を行います。

... EXISTS(SELECT 1/0 FROM TABLE) 

これは、ゼロ除算をトリガーするはずですが、そうでないとテストできます。

テーブルでは何も参照されていないので、私は個人的にはNULLを使用する方が好きです。 2番目の例のINT番号1のような値を選択すると、EXISTS句に精通していないと何が起こっているかを前提にすることができます。

+0

ご意見ありがとうございます。ちなみに、TABLEには10行あり、クエリを実行します:SELECT 120/2 FROM TABLE。列名が120 /であり、すべての行が60.00の値を持つ表を戻します。だから、MySQLはそれを実行するように見えますか? 120/2は60.00と判明しましたが、なぜ1/0がエラーを引き起こさないからですか。その例ではすべての行にnullが書き込まれるため、エバレットが発生していてもトリガーされていないことを意味しますか? – kamaci

+0

ゼロ除算はMySQLではエラーとはみなされません。それは単純にNULLを返します。 –

+2

EXISTS(SELECT *)を忘れないでください。これはまだわかります – gbn

関連する問題