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'
		)
)
相关推荐
难以触及的高度4 小时前
Linux-CentOS 7 上安装 MySQL 8.0.43(保姆级教程)
linux·mysql·centos
Raymond运维5 小时前
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
linux·运维·数据库·mysql
白云偷星子7 小时前
MySQL笔记11
数据库·笔记·mysql
风随心飞飞9 小时前
linux 环境下mysql 数据库自动备份和清库 通过crontab 创建定时任务实现mysql数据库备份
linux·数据库·mysql
奥尔特星云大使9 小时前
读写分离中间件简介
数据库·mysql·中间件·读写分离
disanleya11 小时前
MySQL数据库安装后,如何设置自动化备份策略?
mysql
奥尔特星云大使11 小时前
mysql高可用架构之MHA部署(二)VIP漂移(保姆级)
android·mysql·架构·mha·ip漂移
-Xie-12 小时前
Mysql杂志(三十一)——Join连接算法与子查询、排序优化
数据库·mysql
程序新视界12 小时前
在连表查询场景下,MySQL隐式转换存在的坑
数据库·mysql·dba
咋吃都不胖lyh13 小时前
MySQL 与Power BI 的作用,以及在数据分析中扮演的角色
mysql·数据分析·powerbi