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 
)
相关推荐
扫地的小何尚21 小时前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
数据皮皮侠AI2 天前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节
开开心心就好2 天前
系统清理工具清理缓存日志,启动卸载管理
linux·运维·服务器·神经网络·cnn·pdf·1024程序员节
Evan东少5 天前
[踩坑]笔记本Ubuntu20.04+NvidiaRTX5060驱动+cuda+Pytorch+ROS/Python实现人脸追踪(环境准备)
1024程序员节
不爱编程的小陈6 天前
C/C++每日面试题
面试·职场和发展·1024程序员节
开开心心就好6 天前
右键菜单管理工具,添加程序自定义名称位置
linux·运维·服务器·ci/cd·docker·pdf·1024程序员节
码农三叔7 天前
(4-2-05)Python SDK仓库:MCP服务器端(5)Streamable HTTP传输+Streamable HTTP传输
开发语言·python·http·大模型·1024程序员节·mcp·mcp sdk
西幻凌云11 天前
初始——正则表达式
c++·正则表达式·1024程序员节
启芯硬件11 天前
电源XL6009E1的dieshot细节分析-芯片设计干货
大数据·经验分享·硬件工程·1024程序员节
一颗青果13 天前
单例模式 | 死锁
linux·服务器·单例模式·1024程序员节