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<>'语文')

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

相关推荐
爱勇宝2 分钟前
AI 时代,前端工程师的话语权正在下降?
前端·后端
kymjs张涛3 分钟前
一个月,纯VibeCoding,全平台云笔记APP
前端·javascript·后端
巴勒个啦9 分钟前
esbuild 插件实战:5个真实场景带你自定义构建流水线
前端·angular.js
狗头大军之江苏分军17 分钟前
前端路由是怎么来的
前端·javascript·后端
Patrick_Wilson20 分钟前
Cookie 作用域避坑:父域泄漏、同名优先级与多环境隔离
前端·http·浏览器
api工厂28 分钟前
ZCode 3.0 版本搭配GLM-5.2能力测试
前端·人工智能·ai
小小小小宇31 分钟前
单点登录(二)
前端
阿猫的故乡1 小时前
Vue + Axios 从入门到封装:拦截器、错误处理、请求取消、接口管理全搞定
前端·javascript·vue.js
良逍Ai出海1 小时前
免费模板搭完独立站后,我用 Codex + Figma 做了自己的页面设计
前端·人工智能·figma
纽格立科技1 小时前
DRM 发射端链路图(下)
前端·人工智能·车载系统·信息与通信·传媒