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 
)
相关推荐
学传打活10 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续3)
微信公众平台·1024程序员节·汉字·昆仑正义文化
学传打活15 天前
【边打字.边学昆仑正义文化】_进阶篇5 宇宙星系的运转(续1)
微信公众平台·1024程序员节·汉字·昆仑正义文化
fangzhanpeng16823 天前
快速掌握C#语言基础知识点(1.基础数据类型)
开发语言·c#·1024程序员节
无己心25 天前
面向多平台 AI 搜索引擎的适配层架构设计
前端·人工智能·搜索引擎·ai·1024程序员节
u0103055271 个月前
AI驱动的安卓UI自动生成功能实现
人工智能·1024程序员节
u0103055271 个月前
长株潭智能体赋能腾讯元器链接共享
1024程序员节
云贝贝贝1 个月前
OceanBase认证体系介绍与备考指南
运维·服务器·oceanbase·1024程序员节
u0103055271 个月前
Java图像处理实战指南
人工智能·1024程序员节
u0103055271 个月前
Java AWT鼠标事件全解析
人工智能·1024程序员节
u0103055271 个月前
Java实用类应用精讲
人工智能·1024程序员节