SQL Server OR优先级澄清?

时间:2013-02-12 08:53:44

标签: sql-server sql-server-2008

我正在阅读this question关于逻辑运算符OR AND的条件和条件顺序WHERE

但是我想扩展这个问题。

问题1:

IF (CONDITION 1) OR (CONDITION 2)

我不是在谈论If CONDITION 1 is TRUE, will CONDITION 2 be checked

但是 - SQL是否有可能根据condition 2(第二个短语)选择行,而不是condition 1这是第一个短语?

例如:

columnA      columnB
  2              2

select * from table where id=columnA or id=columnB

现在,我是否有可能将其评估为首先 id=columnB

问题2:

这个问题讨论了Where条款。加入怎么样?这些角色是否也适用

select * from Table1 join Table2 on Table1.id=Table2.id or Table1.aa = Table2.aa

  • 如果条件1为TRUE,是否会检查条件2?
  • SQL是否可能根据condition 2(第二个短语)而不是condition 1(第一个短语)产生一行

1 个答案:

答案 0 :(得分:2)

我不明白你的问题中有关产生行的部分,所以我能回答的唯一部分是:

  

如果条件1为TRUE,则检查条件2

这取决于。它可能,它可能不会。对于SQL语句的任何部分,都不能保证短路或评估顺序。