【问题标题】:Grouping AND and OR conditionals in PostgreSQL在 PostgreSQL 中分组 AND 和 OR 条件
【发布时间】:2012-05-07 01:53:54
【问题描述】:

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

还是不行?

【问题讨论】:

    标签: sql postgresql parentheses operator-precedence


    【解决方案1】:

    在 SQL 中,AND 运算符优先于 OR 运算符。 PostgreSQL 遵守此处的规范。您可以在文档Lexical Structure: Operator Precedence 中查看 PostgreSQL 中的确切优先级。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      猜你喜欢
      • 2012-05-06
      • 2016-10-30
      • 1970-01-01
      • 2015-10-11
      • 2014-11-23
      • 1970-01-01
      • 2014-05-26
      • 2013-11-09
      • 2018-11-22
      相关资源
      最近更新 更多