在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
问题 昨天在写数据库SQL的时候遇到一个问题。问题的根结在SQL语句的AND和OR关键字的执行优先级问题。下面就针对这个问题进行一下测试。 场景 1、有一张学生表Student,表字段包括Id(用户主键)、Name(用户名)、Grade(年级)、Class(班级)、Sex(性别)。如下: 表结构 2、在表中导入十条测试数据,如下: 表数据 3、现需要查询出性别为女的1年级女学生,或者性别为女的2班级女学生。SQL语句如下: 执行结果 执行的结果中还查询出了班级为2的男学生,显然结果是不正确的。 4、修改下SQL语句,添加上括号。如下: select * from student where sex='女' and (grade=1 or class=2) 该sql查询出来的结果符合要求 分析 从上面的场景中,问题的关键就在于AND和OR的执行顺序问题。 1、sex='女' and grade=1 2、 class=2 这也就是查询出1年级的女学生,2班级的学生。不符合最初查询的要求。 1、 sex='女' 2、 (grade=1 or class=2) |
请发表评论