select语句的where子句中的条件
Posted
技术标签:
【中文标题】select语句的where子句中的条件【英文标题】:Condition in where clause of a select statement 【发布时间】:2014-03-13 13:47:46 【问题描述】:假设我有一个 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
我有些困惑。
【问题讨论】:
为什么要添加供应商特定标签?这件事肯定与供应商无关,所以sql
标签就足够了。
【参考方案1】:
and
has higher precedence。是一样的
SELECT * FROM TABLE
WHERE a=a or (b=b and c=c)
查询返回任一
的所有记录a=a
或
b=b AND c=c
【讨论】:
你能列出没有括号的步骤吗? SELECT * FROM TABLE WHERE a=a or b=b and c=c ,你能告诉我答案吗?即没有括号 同不带括号。and
绑定的数量超过 or
。【参考方案2】:
首先它计算 AND 然后 OR。因此,如果 a=a 则不管其余的。
这意味着 AND 具有更高的优先级。当a=a or b=b and c=c
条件被计算实际上第一部分(a = a)被检查,如果它是真的,不管休息的价值是什么
true or (any value) = true
你不能在需要的地方添加括号吗?
【讨论】:
请扩展您的答案。拥有超过 1000 个答案,您肯定可以做得更好。以上是关于select语句的where子句中的条件的主要内容,如果未能解决你的问题,请参考以下文章