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。其实和我们小时候学的四则运算法则(优先级)是一样的。


总结

如果此篇文章有帮助到您, 希望打大佬们能关注点赞收藏评论支持一波,非常感谢大家!
如果有不对的地方请指正!!!

猜你喜欢

转载自blog.csdn.net/weixin_42326851/article/details/129086689