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'
		)
)
相关推荐
FungLeo3 小时前
成为全栈·基础补充·数据库迁移与事务:数据结构怎样安全演进
mysql·postgresql·sqlite·数据一致性·数据库事务·数据库迁移·成为全栈
aiks_yuan9 小时前
MySQL GROUP BY 很慢怎么优化:加了索引反而从 1 秒变 7 秒,Using temporary 该不该消(MySQL 8.2 实测 400 万行)
mysql
数据库小学妹10 小时前
MySQL大字段治理:行溢出机制、覆盖索引与拆表
数据库·mysql·性能优化
这个DBA有点耶12 小时前
MySQL 8.0不可见索引:删索引怕出事,不删又拖慢写入——中间态怎么用?
数据库·mysql·代码规范
噜哥带你玩转 AI 大模型14 小时前
面试加分项!CASE WHEN 两种写法、CTE 公共表表达式、四大类窗口函数,老哥一次讲透
mysql·窗口函数·cte·sql 进阶
bksczm15 小时前
InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer
数据库·mysql
招风的黑耳15 小时前
SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档)
vue.js·spring boot·mysql
.痞老板.17 小时前
mysql初阶--数据库设计
数据库·mysql·oracle
Decay__19 小时前
SQL Server 数据库全栈运维实战系列 — 合集索引(24 篇)
运维·数据库·sql·mysql·架构
Thanks_ks19 小时前
SQL 的 GROUP BY 与聚合函数:从会写 SELECT 到会做统计
数据库·sql·mysql·group by·数据统计·聚合函数·having