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 
)
相关推荐
金融小师妹1 天前
基于机器学习与深度强化学习:非农数据触发AI多因子模型预警!12月降息预期骤降的货币政策预测
大数据·人工智能·深度学习·1024程序员节
紫麦熊1 天前
react+ts+vite+tailwind+shadcn
1024程序员节
日日行不惧千万里2 天前
MediaMTX详解
1024程序员节
金融小师妹2 天前
基于LSTM-GARCH模型:三轮黄金周期特征提取与多因子定价机制解构
人工智能·深度学习·1024程序员节
自信150413057592 天前
初学者小白复盘23之——联合与枚举
c语言·1024程序员节
CoderYanger3 天前
B.双指针——3194. 最小元素和最大元素的最小平均值
java·开发语言·数据结构·算法·leetcode·职场和发展·1024程序员节
自信150413057594 天前
初学者小白复盘22之——结构体
c语言·数据结构·1024程序员节
_Power_Y4 天前
黑马点评逻辑梳理+面试题
数据库·redis·学习·1024程序员节
开开心心_Every5 天前
Excel图片提取工具,批量导出无限制
学习·pdf·华为云·.net·excel·harmonyos·1024程序员节
爱喝水的鱼丶6 天前
SAP-ABAP:SAP概述:数据处理的系统、应用与产品
运维·学习·sap·abap·1024程序员节