mysql exists 和not exists 联合使用的bug

sql 复制代码
select * from student a  
where a.age>15
and
 exists(select 1 from score s where s.student_id = a.id and s.name='数学')
and 
 not exists (select 1 from score s where s.student_id=a.id and s.name<>'语文')

以上语句的含义:

查询出年龄大于15岁的并且参加过数学考试 但是没有参加过语文考试的学生。

也许会说这没有问题,但是当score表中有多条数据时,查询的结果就会出现重复的数据。

解决办法:

将not exists 换成 not in

sql 复制代码
select * from student a  
where a.age>15
and
 exists(select 1 from score s where s.student_id = a.id and s.name='数学')
and 
 a.id not in (select s.student_id from score s where  s.name<>'语文')

为什么查询结果会出现重复的数据,具体原因未知。

相关推荐
q***95229 分钟前
SpringMVC 请求参数接收
前端·javascript·算法
|晴 天|11 分钟前
Vite 为何能取代 Webpack?新一代构建工具的崛起
前端·webpack·node.js
带只拖鞋去流浪15 分钟前
迎接2026,重新认识Webpack5
前端·webpack
i***512628 分钟前
【数据库】MySQL的安装与卸载
数据库·mysql·adb
7***318829 分钟前
若依微服务中配置 MySQL + DM 多数据源
android·mysql·微服务
HIT_Weston30 分钟前
43、【Ubuntu】【Gitlab】拉出内网 Web 服务:静态&动态服务
前端·ubuntu·gitlab
M***299131 分钟前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu·adb
LucidX35 分钟前
Web——反向代理、负载均衡与 Tomcat 实战部署
前端·tomcat·负载均衡
sen_shan1 小时前
《Vue项目开发实战》第八章:组件封装--vxeGrid
前端·javascript·vue.js
五点六六六1 小时前
双非同学校招笔记——离开字节入职小📕
前端·面试·程序员