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'
		)
)
相关推荐
呆瑜nuage7 小时前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql
元宝骑士7 小时前
FIND_IN_SET使用指南:场景、优缺点与MySQL优化策略
后端·mysql
猿小喵8 小时前
MySQL慢查询分析与处理-第二篇
数据库·mysql·性能优化
Y001112368 小时前
MySQL-进阶
开发语言·数据库·sql·mysql
前进的李工9 小时前
MySQL角色管理:权限控制全攻略
前端·javascript·数据库·mysql
爱丽_9 小时前
MySQL `EXPLAIN`:看懂执行计划、判断索引是否生效与排错套路
android·数据库·mysql
牧魂.9 小时前
MySQL 主从延迟根因诊断法
mysql·高并发·主从复制·主从延迟·数据库调优
东北甜妹9 小时前
MySQL数据库高级特性
mysql
Trouvaille ~9 小时前
【MySQL篇】从零开始:安装与基础概念
linux·数据库·mysql·ubuntu·c·教程·基础入门
Yana.nice10 小时前
MySQL 事务的四大特性(ACID)
数据库·mysql·oracle