19

SQLクエリでは常に括弧を使用します。しかし、私は例を持っています:

DELETE FROM prog 
WHERE prog_start >= $1 AND prog_start < $2
   OR prog_end > $1 AND prog_end <= $2

に等しいか:

DELETE FROM prog
WHERE ( prog_start >= $1 AND prog_start < $2 )
   OR ( prog_end > $1 AND prog_end <= $2 ) 

か否か ?

4

2 に答える 2

24

SQL では、AND演算子は演算子よりも「優先」されORます。PostgreSQL は、こちらの仕様に準拠しています。docs Lexical Structure: Operator Precedenceで、PostgreSQL での正確な優先順位を確認できます。

したがって、あなたの場合、結果は同じになります。ただし、単に括弧を使用する方がはるかに簡単でクリーンです。

于 2012-04-26T10:33:46.367 に答える
1

Operator Precendence http://www.postgresql.org/docs/6.5/static/operators.htm#AEN1615に従っていきます。

複雑な条件を形成するには、条件を括弧で囲むことを常にお勧めします。

于 2012-04-26T10:40:39.583 に答える