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'
		)
)
相关推荐
·云扬·7 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
筵陌8 小时前
MySQL索引及其底层原理(上)
mysql
怣509 小时前
MySQL子查询零基础入门教程:从小白到上手(零基础入门版)
数据库·mysql
猫头虎10 小时前
基于信创openEuler系统安装部署OpenTeleDB开源数据库的实战教程
数据库·redis·sql·mysql·开源·nosql·database
Nandeska10 小时前
17、MySQL InnoDB ReplicaSet
数据库·mysql
hlABgYML10 小时前
基于NGSIM数据的Wiedemann99跟驰模型标定
mysql
墨理学AI11 小时前
一文学会一点python数据分析-小白原地进阶(mysql 安装 - mysql - python 数据分析 - 学习阶段梳理)
python·mysql·数据分析
洛豳枭薰11 小时前
MySQL 并行复制
数据库·mysql
纤纡.11 小时前
Linux 下 MySQL 数据类型与约束:第三章核心表格归纳与实战应用
linux·mysql
czlczl2002092511 小时前
增删改查时如何提高Mysql与Redis的一致性
数据库·redis·mysql