sql查询中的多个where条件

时间:2015-04-13 04:09:51

标签: sql postgresql

我正在尝试在pgSQL中执行以下查询。

   select count(id) from master 
        where act1=true or act2=true
         and regn_no>2000;

但查询返回满足'act1 = true或act2 = true'条件的所有行。它不检查act1 = true或act2 = true。为什么?

SQLFIDDLE: http://sqlfiddle.com/#!9/23b1f/1

1 个答案:

答案 0 :(得分:2)

因为AND优先级高于OR,所以sql将你的where子句解析为

(act1=true) or (act2=true
         and regn_no>2000);

您必须按以下步骤重写您的查询

select count(id) from master 
        where (act1=true or act2=true)
         and regn_no>2000;