sql中and和or的优先级问题
文章目录
- 结论:
- 解决办法:
- 总结
看一个例子,数据表如下:
现在需要查询年龄30岁,地址是北京或者上海的用户信息。
看sql-1:
SELECT * FROM users WHERE age=30 AND address='北京' OR address='上海'
查询结果为:
看sql-2:
SELECT * FROM users WHERE age=30 AND (address='北京' OR address='上海')
查询结果为:
结论:
第一个查询结果是不对的,我们要查的是年龄30,地址是北京或者上海的用户,第一个查询结果中出现了年龄40的用户。出现问题的原因是and和or的运算优先级问题。AND的运算优先级高于OR,所以实际执行的是:
age=30 AND address=‘北京’ :年龄30的北京用户(结果的第1条记录) ;
OR address=‘上海’ :或者上海的用户(结果的第2、3条记录),于是出现了上述结果。
解决办法:
通过加入()来调整他们的优先级,让OR先执行,再进行AND。其实和我们小时候学的四则运算法则(优先级)是一样的。
总结
如果此篇文章有帮助到您, 希望打大佬们能
关注
、点赞
、收藏
、评论
支持一波,非常感谢大家!
如果有不对的地方请指正!!!
还没有评论,来说两句吧...