在mysql中,經常會遇到這樣的情況,在寫條件語句where時,可能會同時有多個條件的“或”或者“與”,但經常會達不到效果,經百度,本人發現一個where語句中同時出現條件的“與”或者“或的時候”,要將多個OR用小括號括起來再和AND進行“與”,或者將多個AND用小括號括起來再與OR進行“或”。
eg. select * from table from id=1 or id=2 and price>=10;
這條語句默認執行的是id=2並且price大於等於10的,或者是id=1。
如果加上括號:select * from table from (id=1 or id=2) and price>=10;
則這條語句執行的是id=1或id=2,並且price大於等於10。
and與or優先級
在where中可以包含任意數目的and和or操作符,在沒有任何其他符號的時候,例如括號,SQL會首先執行and條件,然后才執行or語句,如:
select * from table from id=1 or id=2 and price>=10; /* http://www.manongjc.com/article/1439.html */
這條語句默認執行的是id=2並且price大於等於10的,或者是id=1。
如果加上括號:
select * from table from (id=1 or id=2) and price>=10;
則這條語句執行的是id=1或id=2,並且price大於等於10。