PostgreSQL中的分组和或条件
我总是在sql查询中使用括号。但我有一个例子:PostgreSQL中的分组和或条件,sql,postgresql,parentheses,operator-precedence,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 从程序中删除 其中prog_start>=$1和prog_start$1,程序结束=$1,程序开始$1和prog_end在SQL中,和运算符优先于或运算符。PostgreSQL遵守此处的规范。您可以在文档中查看PostgreS
DELETE FROM prog
WHERE prog_start >= $1 AND prog_start < $2
OR prog_end > $1 AND prog_end <= $2
从程序中删除
其中prog_start>=$1和prog_start<$2
或程序结束>$1,程序结束=$1,程序开始<$2)
或者(prog_end>$1和prog_end在SQL中,和
运算符优先于或
运算符。PostgreSQL遵守此处的规范。您可以在文档中查看PostgreSQL中的确切优先级
因此,在您的例子中,结果是相同的。但是,简单地使用括号更容易、更干净。它是根据运算符的顺序进行的
要形成一个复杂的条件,最好将你的条件括起来。很好的分析,但是…关于这个特殊情况的错误结论,no?6.5是一个有点过时的参考版本。(或者/和运算符优先级的更改可能不是最常见的更改,顺便说一下…)关于引用PostgreSQL手册,请考虑与当前手册的正确链接:
DELETE FROM prog
WHERE ( prog_start >= $1 AND prog_start < $2 )
OR ( prog_end > $1 AND prog_end <= $2 )