【问题标题】:Order of operations for SQL?SQL的操作顺序?
【发布时间】:2012-07-17 05:43:46
【问题描述】:

假设我有这样的说法:

SELECT * FROM MyTable WHERE a = 1 or b = 2 and c = 3

这是表示:(a = 1) OR (b = 2 AND c = 3) 还是表示 (a = 1 or b = 2) AND c = 3?我可以更改它的含义,即在 AND 之前执行 OR 还是不可能?

【问题讨论】:

  • (a = 1) OR (b = 2 AND c = 3)
  • 操作顺序并没有真正遵循这一点。它将返回 a=1 和 c=3 或 b=2 的任何内容,因此它更像是 (a=1 and c=3) or b=2
  • 对不起,我知道这不是最好的例子,我的现实世界问题非常庞大,很难以紧凑的方式总结,我只需要知道如何将操作汇总在一起

标签: sql sql-server-ce


【解决方案1】:

来自Technet

当一个语句中使用多个逻辑运算符时,AND 运算符首先被评估。您可以更改评估顺序 使用括号。

所以是的,它的意思是(a = 1) OR (b = 2 AND c = 3)

您可以像上面一样通过编写括号来强制执行您想要的行为:(a = 1 OR b = 2) AND c = 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多