【问题标题】:Condition in where clause of a select statementselect语句的where子句中的条件
【发布时间】:2023-03-15 07:29:01
【问题描述】:

假设我有一个 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 标签就足够了。

标签: mysql sql oracle tsql postgresql-9.2


【解决方案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 个答案,您肯定可以做得更好。
猜你喜欢
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
相关资源
最近更新 更多