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'
		)
)
相关推荐
k***08297 分钟前
mysql中general_log日志详解
android·数据库·mysql
一辉ComeOn14 分钟前
【大数据高并发核心场景实战】 数据持久化层 - 分表分库
java·大数据·分布式·mysql·系统架构
i***586715 分钟前
【MySQL数据库】Ubuntu下的mysql
数据库·mysql·ubuntu
一叶飘零_sweeeet28 分钟前
MySQL锁机制深度剖析:从底层原理到实战避坑,一篇吃透所有锁!
数据库·mysql·
r***11331 小时前
【MySQL】MySQL库的操作
android·数据库·mysql
星光一影1 小时前
同城派送系统源码,支持小程序,h5,app
mysql·小程序·php·uniapp
h***67371 小时前
Mysql 驱动程序
数据库·mysql
Y***h1871 小时前
MySQL不使用子查询的原因
android·数据库·mysql
Ka1Yan1 小时前
快速上手MySQL中的JSON函数语法——5.x+ / 8.x+
数据库·sql·mysql·json
3***16101 小时前
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
android·数据库·mysql