如何解决SQL语句中AND和OR执行顺序遇到的问题

79次阅读
没有评论

共计 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 执行顺序遇到的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计754字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)