2013-02-12 103 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語句的任何部分,不保證短路或評估順序。