1. 程式人生 > >原生Mysql之and和or混合使用

原生Mysql之and和or混合使用

在書寫程式碼時常常容易出現,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條件要用 ()包括在一起,組成一個部分,不然,並不能達到預期的效果。