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 遵守此处的规范。您可以在文档Lexical Structure: Operator Precedence中获得 PostgreSQL 中的确切优先级。

因此,在您的情况下,结果将是相同的。但是,简单地使用括号会更容易、更简洁。

于 2012-04-26T10:33:46.367 回答
1

它按照运算符优先级 http://www.postgresql.org/docs/6.5/static/operators.htm#AEN1615进行。

要形成一个复杂的条件,最好用括号括起来。

于 2012-04-26T10:40:39.583 回答