Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL中的分组和或条件_Sql_Postgresql_Parentheses_Operator Precedence - Fatal编程技术网

PostgreSQL中的分组和或条件

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

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