在书写代码时常常容易出现,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 = 'test3@qq.com' and age = '20';
结果:
正确的语句写法: select * from test where (name = 'test2' or user_email = 'test3@qq.com') and age = '20';
依据以上的例子我们可以看出来,是有明显区别的。
总结:要使用and和or的混合使用,or条件要用 ()包括在一起,组成一个部分,不然,并不能达到预期的效果。