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

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

相关推荐
奔跑的web.3 小时前
TypeScript 装饰器入门核心用法
前端·javascript·vue.js·typescript
集成显卡4 小时前
Lucide Icons:一套现代、轻量且可定制的 SVG 图标库
前端·ui·图标库·lucide
pas1364 小时前
37-mini-vue 解析插值
前端·javascript·vue.js
十里-5 小时前
vue.js 2前端开发的项目通过electron打包成exe
前端·vue.js·electron
雨季6666 小时前
构建 OpenHarmony 简易文字行数统计器:用字符串分割实现纯文本结构感知
开发语言·前端·javascript·flutter·ui·dart
小北方城市网6 小时前
Redis 分布式锁高可用实现:从原理到生产级落地
java·前端·javascript·spring boot·redis·分布式·wpf
console.log('npc')6 小时前
vue2 使用高德接口查询天气
前端·vue.js
2401_892000526 小时前
Flutter for OpenHarmony 猫咪管家App实战 - 添加支出实现
前端·javascript·flutter
天马37987 小时前
Canvas 倾斜矩形绘制波浪效果
开发语言·前端·javascript
天天向上10247 小时前
vue3 实现el-table 部分行不让勾选
前端·javascript·vue.js