嗯,我覺得很簡單的問題,但我找不到滿意的答案。 這兩個查詢有區別嗎?這兩個查詢有區別嗎?
SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'
SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')
在此先感謝
嗯,我覺得很簡單的問題,但我找不到滿意的答案。 這兩個查詢有區別嗎?這兩個查詢有區別嗎?
SELECT * FROM table WHERE column1 = 'x' OR column2 = 'x'
SELECT * FROM table WHERE (column1 = 'x' OR column2 = 'x')
在此先感謝
現在有沒有區別在您的查詢。
如果在查詢中添加了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'
明白了,謝謝! – Crinsane
沒有,有沒有一個單一的差別。
查看更多MySQL語法here。
號其相同。只要有兩個條件大括號沒有太大意義。
而且我上面的評論,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)
所以不,沒有任何區別。
不,沒有。 – eggyal
沒有,但你應該習慣把OR條件放在圓括號裏,因爲AND具有比OR->'x和(y或z)更高的優先級。 –