SQL进阶:not exists谓词

目录

1、查询所有科目成绩都在50分以上的学生学号

[2、查询数学分数在80分及以上的,语文分数在50分及以上的 学生ID](#2、查询数学分数在80分及以上的,语文分数在50分及以上的 学生ID)


not exists:习惯"肯定<==>双重否定"之间的转换

1、查询所有科目成绩都在50分以上的学生学号

sql 复制代码
CREATE TABLE `test_scores` (
	`student_id` INT(10) NULL DEFAULT NULL COMMENT '学生ID',
	`subject` VARCHAR(50) NULL DEFAULT NULL COMMENT '课程' COLLATE 'utf8mb4_0900_ai_ci',
	`score` INT(10) NULL DEFAULT NULL COMMENT '成绩'
)
COMMENT='学生考试成绩表(肯定与双重否定之间的转换)'
COLLATE='utf8mb4_0900_ai_ci'
ENGINE=InnoDB
;

录入数据:

所有成绩都是50分以上,双重否定就是:没有一科成绩是在50分以下的

sql 复制代码
SELECT DISTINCT student_id FROM test_scores a
WHERE 
NOT EXISTS (SELECT 1 
            FROM test_scores b 
            WHERE a.student_id = b.student_id 
            AND b.score < 50)

执行结果:

2、查询数学分数在80分及以上的,语文分数在50分及以上的 学生ID

双重否定就是:不存在数学分数在80分以下的或语文分数在50分以下的。

sql 复制代码
SELECT DISTINCT student_id FROM test_scores a 
WHERE SUBJECT IN ('数学','语文')
AND  NOT EXISTS 
(SELECT 1 FROM test_scores b WHERE a.student_id = b.student_id 
AND 1 = case when SUBJECT = '数学' AND score < 80 then 1
			 when SUBJECT = '语文' AND score < 50 then 1 ELSE 0 END 
)
相关推荐
unable code1 天前
磁盘取证-Flying_High
网络安全·ctf·misc·1024程序员节·磁盘取证
unable code2 天前
磁盘取证-ColorfulDisk
网络安全·ctf·misc·1024程序员节·内存取证
unable code3 天前
磁盘取证-[第十章][10.1.2 磁盘取证方法]磁盘取证1
网络安全·ctf·misc·1024程序员节·内存取证
开开心心就好5 天前
免费抽奖工具支持批量导入+自定义主题
linux·运维·服务器·macos·pdf·phpstorm·1024程序员节
开开心心就好9 天前
卸载工具清理残留,检测垃圾颜色标识状态
linux·运维·服务器·python·安全·tornado·1024程序员节
子燕若水10 天前
Facebook reels 运营指南
1024程序员节
尘觉13 天前
创作 1024 天|把热爱写成长期主义
数据库·1024程序员节
写点什么呢14 天前
Word使用记录
word·1024程序员节
开开心心就好14 天前
内存清理工具点击清理,自动间隔自启
linux·运维·服务器·安全·硬件架构·材料工程·1024程序员节
开开心心就好14 天前
内存清理工具开源免费,自动优化清理项
linux·运维·服务器·python·django·pdf·1024程序员节