MySQL——子查询和嵌套查询

where (计算出的值)

本质: 在where语句中嵌套一个子查询语句

代码演示:

sql 复制代码
-- 1. 查询数据库结构-1 的所有考试结果(学号,科目名称,成绩),降序排列

-- 方式一:使用连接查询
SELECT studentno,subjectname,studentresult
FROM result r
INNER JOIN `subject` sub
ON r.subjectno = sub.subjectno
WHERE subjectname = '数据库结构-1'
ORDER BY studentresult DESC

-- 方式二:使用子查询(由里及外)
SELECT studentno,subjectno,studentresult
FROM result 
WHERE subjectno = (
    SELECT subjectno FROM `subject` WHERE  subjectname = '数据库结构-1'  -- 查询所有数据库结构-1 的学生学号
)
ORDER BY studentresult DESC

-- 2. 分数不小于80分的学生的学号和姓名
SELECT DISTINCT s.studentno,studentname  -- DISTINCT:去重
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno
WHERE studentresult>=80

-- 在此基础上增加一个科目
SELECT DISTINCT s.studentno,studentname  -- DISTINCT:去重
FROM student s
INNER JOIN result r
ON r.studentno = s.studentno
WHERE studentresult>=80 AND subjectno = (
    SELECT subjectno FROM `subject` WHERE subjectname = '高等数学-1'
)

-- 再改造(由里及外)
SELECT studentno,studentname FROM student WHERE studentno IN (
    SELECT studentno FROM result WHERE studentresult>=80 AND subjectno = (
		    SELECT subjectno FROM `subject` WHERE subjectname = '高等数学-1'
		)
)
相关推荐
shaoming377630 分钟前
MySQL篇之对MySQL进行参数优化,提高MySQL性能
数据库·mysql
程序员夏末1 小时前
【MySQL | 第一篇】 深入理解三大日志(undo Redo Bin)
数据库·mysql
ruxingli2 小时前
MySQL优化
数据库·mysql
feng68_2 小时前
MySQL集群主从复制
linux·运维·数据库·mysql·adb
Xzq2105092 小时前
Mysql API学习
数据库·学习·mysql
宁小法3 小时前
MySQL - 读写延迟, 并发导致的问题-分析与解决
数据库·mysql·主从延迟·并发请求
流星白龙3 小时前
【MySQL】0.MySQL安装
数据库·mysql
captain3763 小时前
初识MySQL(My structured query language)
数据库·mysql
秦渝兴3 小时前
从手工高可用到全容器化:我的 Keepalived+Nginx+Tomcat+MySQL 项目迁移实战
linux·运维·mysql·nginx·容器·tomcat
蓝黑20204 小时前
SQL的update语句更新顺序的坑
数据库·sql·mysql