我正在尝试在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
答案 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;