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'
		)
)
相关推荐
想睡hhh17 小时前
mysql内置函数——了解常用的函数
mysql
Archy_Wang_117 小时前
centos7的mysql做定时任务备份所有数据库
数据库·mysql
Java 码农17 小时前
MySQL EXPLAIN 详解与优化指南
android·mysql·adb
Java 码农17 小时前
MySQL基础操作案例设计
数据库·mysql
csdn_aspnet18 小时前
如何在 Mac、Ubuntu、CentOS、Windows 上安装 MySQL 客户端
linux·windows·mysql·macos·centos
qq_54702617918 小时前
Canal实时同步MySQL数据到Elasticsearch
数据库·mysql·elasticsearch
csdn_aspnet19 小时前
CentOS 7 上安装 MySQL 8.0
linux·mysql·centos
一只小bit1 天前
MySQL事务:如何保证ACID?MVCC到底如何工作?
数据库·mysql·oracle
·云扬·1 天前
使用pt-archiver实现MySQL数据归档与清理的完整实践
数据库·mysql
weixin_46681 天前
安装Zabbix7
数据库·mysql·zabbix