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

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

相关推荐
艾斯特_17 分钟前
Echarts常用配置项及解释
前端·javascript·echarts
m0_5027249526 分钟前
飞书真机调试
开发语言·前端·javascript
我只会写Bug啊1 小时前
复制可用!纯前端基于 Geolocation API 实现经纬度获取与地图可视化
前端·高德地图·地图·百度地图·经纬度
刘一说1 小时前
Vue3 模块语法革命:移除过滤器(Filters)的深度解析与迁移指南
前端·vue.js·js
林鸿群2 小时前
ubuntu 26.04 安装mysql-server
linux·mysql·ubuntu
_F_y2 小时前
MySQL表的操作
android·数据库·mysql
lkbhua莱克瓦242 小时前
JavaScript核心语法
开发语言·前端·javascript·笔记·html·ecmascript·javaweb
Trae1ounG2 小时前
这是什么dom
前端·javascript·vue.js
千寻技术帮2 小时前
10336_基于SSM的少数民族文化商城
mysql·毕业设计·ssm·非遗商城
比老马还六2 小时前
Bipes项目二次开发/扩展积木功能(八)
前端·javascript