在PostgreSQL中对AND和OR条件进行分组

时间:2012-04-26 10:28:29

标签: sql postgresql parentheses operator-precedence

我总是在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 ) 
是不是?

2 个答案:

答案 0 :(得分:10)

在SQL中,AND运算符优先于OR运算符。 PostgreSQL遵循这里的规范。您可以在文档Lexical Structure: Operator Precedence中明确优先使用PostgreSQL。

所以在你的情况下,结果将是相同的。但是,简单地使用括号更简单,更简洁。

答案 1 :(得分:0)

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

要形成一个复杂的条件,最好用括号表示你的条件。