SQL比知必会一书中写到:在使用AND和OR的时候,尽量用括号使语句的意思表达明白。
Mysql数据库会优先处理AND操作符
我们探究下这个问题
实际表数据
语句如下:
select * from book where bid in (1,3,4) or bname like 'Java%' and price = 30
因为Mysql先处理AND操作符,所以先判断bname like 'Java%' and price = 30,没有符合该条件的记录,和bid in (1,3,4)做或运算,结果如图所示。
用另一种情况验证一下。
交换AND和OR的顺序
select * from book where bid in (1,3,4) and bname like 'Java%' or p