2012-05-30 77 views
0

嗯,我覺得很簡單的問題,但我找不到滿意的答案。 這兩個查詢有區別嗎?這兩個查詢有區別嗎?

SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x' 

SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x') 

在此先感謝

+6

不,沒有。 – eggyal

+1

沒有,但你應該習慣把OR條件放在圓括號裏,因爲AND具有比OR->'x和(y或z)更高的優先級。 –

回答

2

現在有沒有區別在您的查詢。

如果在查詢中添加了AND條件,則會有差異。

e.g

SELECT * FROM table WHERE id=1 AND column1 = 'x' OR column2 = 'x' 

SELECT * FROM table WHERE id=1 AND (column1 = 'x' OR column2 = 'x') 

SELECT * FROM table WHERE id=1 AND column1 = 'x' OR column2 = 'x' 

將相當於

SELECT * FROM table WHERE (id=1 AND column1 = 'x') OR column2 = 'x' 

希望你有所作爲。

+1

明白了,謝謝! – Crinsane

1

沒有,有沒有一個單一的差別。

查看更多MySQL語法here

1

號其相同。只要有兩個條件大括號沒有太大意義。

2

而且我上面的評論,the manual解釋說:

一些由MySQL執行的優化遵循:

  • 去除不必要的括號:

     ((a AND b) AND c OR (((a AND b) AND (c AND d)))) 
    -> (a AND b AND c) OR (a AND b AND c AND d)

所以不,沒有任何區別。

3

當AND運算符還有一個條件時,括號的作用將是有用的。 否則執行計劃除語法外沒有區別。

+5

+1,刪除了我的副本 – Habib