原生Mysql之and和or混合使用
阿新 • • 發佈:2018-12-18
在書寫程式碼時常常容易出現,or和and的混合使用。首先,要明確的是and相對於or來說,前者的優先順序是要更高。
我們先來看一下,經常容易犯的錯誤例子:
語句一: select * from tableNameA where fieldA = 'xx' or ffieldB = 'cc' and fieldC='dd';
我們來解讀一下語句一所表達的意思:在tableNameA表中,搜尋(第一部分: fieldA = 'xx' )或者 (第二部分 :fieldB = 'cc' and fieldC='dd' )。然而我們與我們想要表達的意思相悖(第一部分:fieldA = 'xx' or ffieldB = 'cc'),(第二部分 :fieldC='dd' )。
下面我們來看一下例項:
我建立了一個test表,有如下資料:
一般我們理解的or語句寫法: select * from test where name = 'test2' or user_email = '[email protected]' and age = '20';
結果:
正確的語句寫法: select * from test where (name = 'test2' or user_email = '[email protected]') and age = '20';
依據以上的例子我們可以看出來,是有明顯區別的。
總結:要使用and和or的混合使用,or條件要用 ()包括在一起,組成一個部分,不然,並不能達到預期的效果。