共计 754 个字符,预计需要花费 2 分钟才能阅读完成。
这篇文章将为大家详细讲解有关如何解决 SQL 语句中 AND 和 OR 执行顺序遇到的问题,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
场景
1、有一张学生表 Student, 表字段包括 Id(用户主键)、Name(用户名)、Grade(年级)、Class(班级)、Sex(性别)。如下:
表结构
2、在表中导入十条测试数据,如下:
表数据
3、现需要查询出性别为女的 1 年级女学生,或者性别为女的 2 班级女学生。SQL 语句如下:
select * from student where sex= 女 and grade=1 or > 但是该 sql 查询出来的结果并不符合要求,执行结果如下:
执行结果
执行的结果中还查询出了班级为 2 的男学生,显然结果是不正确的。
4、修改下 SQL 语句,添加上括号。如下:
select * from student where sex= 女 and (grade=1 or >该 sql 查询出来的结果符合要求
分析
从上面的场景中,问题的关键就在于 AND 和 OR 的执行顺序问题。
查阅资料,关系型运算符优先级高到低为:NOT AND OR
如果 where 后面有 OR 条件的话,则 OR 自动会把左右的查询条件分开。
就如上面场景中的第一条语句,他的查询条件分为两部分(或):1、sex= 女 and grade=1
2、 >这也就是查询出 1 年级的女学生,2 班级的学生。不符合最初查询的要求。
那么解决办法就是使用括号区分执行的顺序
就如上面场景的第二条语句,查询条件分为两部分(并):1、 sex= 女
2、 (grade=1 or >关于“如何解决 SQL 语句中 AND 和 OR 执行顺序遇到的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。