2013-02-12 81 views
0

我读this question逻辑运算符OR和在WHERESQL Server OR优先澄清?

但是我想延长这一问题的条件和环境秩序。

问题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

现在,是有可能,我行beucuse它评估第一id=columnB

问题2:

这问题ta关于Where条款。怎么样加入?没有这些角色也适用

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

  • 如果条件1为真,将条件2进行检查?
  • 难道SQL将产生基于condition 2行(这是第二句话),而不是condition 1这是第一个短语
+2

我不明白你试图用“产生一排基于......”来划分什么样的区别 - 你可以试着解释一下这个区别是什么(或者会是什么),为什么它很重要? – 2013-02-12 09:39:27

+0

@Damien_The_Unbeliever请看看我的编辑。 – 2013-02-12 11:17:38

+1

我还不确定。在结果集中似乎没有**可观察到的差异。那么,它会产生什么*不同? – 2013-02-12 11:21:18

回答

2

我不明白你的问题的部分问得行,所以我可以迄今回答只有部分是:

如果条件1为真,将条件2检查

这要看情况。它可能,它可能不会。对于SQL语句的任何部分,不保证短路或评估顺序。