2011-12-02 10 views
8

可能性の重複:
Why would someone use WHERE 1=1 AND <conditions> in a SQL clause?where節に1 = 1を使用する論理的な理由はありますか?

が、私は多くの場合、多くの場合、

where 1=1

を持っているコードベースに取り組んでいます、これらのクエリは、複雑で読みにくいです。純粋にリファクタのためにクエリのセマンティクスを細分化することは必ずしも実現可能ではありません。私の直感は、これは常に不必要であるということです。おそらく、集計関数を持つSELECTをいくつかの列とグループ化して実行するときに、Group By節の要件と同様のwhere節が必要になることがあります。

これはいつまでも必要ですか?

+4

をここでコメントを容易にするためにそれを使用した場合の開発者のほとんどは、) –

+0

私が欲しいかもしれない、SO一度か二度にこの正確な質問を見てきましたあなたの質問のタイトルを入力するときに表示される提案された質問のリストにもっと注意を払うこと。 –

+0

ここで、1 = 1は100%TRUEステートメントです。したがって、行があるかどうかにかかわらず、SELECTステートメントにあるものはすべて返されます。 –

答えて

16

それは、WHERE句が簡単にダイナミックに構築します...

WHERE 
    1=1 
    AND condition1 
    AND condition2 

あなたはうまくする必要はありません。この方法あなたが条件を追加するときに、ANDまたはNOTが必要な場合。 常ににANDが必要です。

1

私は、長いWHERE節を書くことができることは、偽のAND文について考える必要はないと考えています。言い換えれば、コードを見栄え良くすることができます。かなり最適化されていることを確かめてください。 ORが前にあるかどうしかし、それはSQLインジェクションの匂いだ:)

SELECT 
... 
WHERE 1=1 
AND COND 
AND ANOTHERCOND 
AND THIRDCOND 
-- AND COMMENTEDOUT 
AND FIFTHCOND 
+0

ええ、しかし、あなたがORを "1 = 0"にしているのは、あなたがで始まるものです:) –

2

動的なクエリを構築するときに、動的にSQLに制限を追加した場合、すべてがWHERE 1=1

2

後にその有用であったので、あなたがAND句を開始する場所を知っている必要がありますする必要はありませんでしたように、私はそれが行わ見てきましたつまり、WHEREキーワードを気にする必要はなく、制限を追加するすべての部分の先頭にANDを使用できます。 (あなたが望むなら、それを説明する小さな例を書くことができます)

そうですね、1 = 1の正当な使用があります。

1

はい、それはSQLインジェクションしやすいウェブサイトと非常に便利な条件

関連する問題