select语句的where子句中的条件

时间:2014-03-13 13:47:47

标签: mysql sql oracle tsql postgresql-9.2

假设我有一个select语句:

SELECT * FROM TABLE WHERE a=a or b=b and c=c

条件的评估如下:

1->a=a 2->b=b 3->b=b and c=c 4->a=a or b=b and c=c

我有些困惑。

2 个答案:

答案 0 :(得分:5)

and has higher precedence。它与

相同
SELECT * FROM TABLE 
WHERE a=a or (b=b and c=c)

查询返回

的所有记录
a=a

b=b AND c=c

答案 1 :(得分:-1)

首先它评估AND然后是OR。所以,如果a = a,无论其余是什么。

这意味着AND具有更高的优先级。实际计算a=a or b=b and c=c条件时,检查第一部分(a = a)是否正确,无论休息的价值是多少都是如此 true或(任何值)= true

你不能在你需要的地方添加括号吗?