我们来学mysql -- 同时使用 AND 和 OR 查询错误(填坑篇)
AND 和 OR 一同使用问题
- 现象
- 分析
- 处理
- 扩展
现象
-
业务上在“锁定”当前零件所在出口国的所有零件时,出现其他国家零件
-
问题定位
分析
-
or 切断了操作符之间的连续性,从union角度分析
-
where k1 = 'Td621' and k1 = 'Vda96' or k3 = 'P00009'
等同select * from ucoding where k1 = 'Td621' and k1 = 'Vda96' union select * from ucoding where k3 = 'P00009'
-
where k1 = 'Td621' or k3 = 'P00009' and k1 = 'Vda96'
等同select * from ucoding where k1 = 'Td621'union select * from ucoding where k3 = 'P00009' and k1 = 'Vda96'
处理
- 看 and 连接的条件在业务上应该和哪些条件结合
- 如果还是看不出来,拆分成 union检查
扩展
- 面试中…,面试官问,OR如何造成索引失效
- 镇定自若中…balabala,HR说等通知
- 回家查看到大佬的博客,有如下发现
-
索引不失效
-
索引失效
-
索引再次生效
-
- 😆->🤣😂->😭关于type字段含义请查看 访问方法(原理篇)