MySQL OR 和 AND 混用的坑 优先级
Posted 星丶空LTL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL OR 和 AND 混用的坑 优先级相关的知识,希望对你有一定的参考价值。
先在Mysql中插入4条数据,如下:
现在要查询 名字叫张三或者李四,且年龄为18 的数据。
根据需求编写sql语句并执行,应该查出2条数据,可执行结果如下:
查出3条数据,多出一条 名字叫张三,年龄为20 的数据。
分析:
主要原因在于——MySQL中,AND的执行优先级高于OR,优先执行AND,并不是编写顺序执行。
where name = '张三' or name = '李四' and age = 18
对于以上的条件sql,MySQL会默认优先执行 name = ‘李四’ and age = 18 ,再把得到的结果与 name = ‘张三’ 执行or操作。
含义相当于:查询 名字叫李四 且 年龄为18 或者 名字叫张三 的数据。
这种默认执行,会把 名字叫张三 的数据全部查询出来,所以多出一条数据,并不准确。
解决:
用括号()把条件组合起来以改变MySQL执行顺序。
以上是关于MySQL OR 和 AND 混用的坑 优先级的主要内容,如果未能解决你的问题,请参考以下文章