MySQL select 子查询的使用
### 子查询
>where 这个值是计算出来的
>本质:`在 where 语句中嵌套一个子查询语句`
```sql
/*============== 子查询 ================
什么是子查询?
在查询语句中的WHERE条件子句中,又嵌套了另一个查询语句
嵌套查询可由多个子查询组成,求解的方式是由里及外;
子查询返回的结果一般都是集合,故而建议使用IN关键字;
*/
-- 查询 数据库结构-1 的所有考试结果(学号,科目编号,成绩),并且成绩降序排列
-- 方法一:使用连接查询
SELECT studentno,r.subjectno,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'
)
ORDER BY studentresult DESC;
-- 查询课程为 高等数学-2 且分数不小于80分的学生的学号和姓名
-- 方法一:使用连接查询
SELECT s.studentno,studentname
FROM student s
INNER JOIN result r
ON s.`StudentNo` = r.`StudentNo`
INNER JOIN `subject` sub
ON sub.`SubjectNo` = r.`SubjectNo`
WHERE subjectname = '高等数学-2' AND StudentResult>=80
-- 方法二:使用连接查询+子查询
-- 分数不小于80分的学生的学号和姓名
SELECT r.studentno,studentname FROM student s
INNER JOIN result r ON s.`StudentNo`=r.`StudentNo`
WHERE StudentResult>=80
-- 在上面SQL基础上,添加需求:课程为 高等数学-2
SELECT r.studentno,studentname FROM student s
INNER JOIN result r ON s.`StudentNo`=r.`StudentNo`
WHERE StudentResult>=80 AND subjectno=(
SELECT subjectno FROM `subject`
WHERE subjectname = '高等数学-2'
)
-- 方法三:使用子查询
-- 分步写简单sql语句,然后将其嵌套起来
SELECT studentno,studentname FROM student WHERE studentno IN(
SELECT studentno FROM result WHERE StudentResult>=80 AND subjectno=(
SELECT subjectno FROM `subject` WHERE subjectname = '高等数学-2'
)
)
```
最新文章
- docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
- .NET面试题系列[12] - C# 3.0 LINQ的准备工作
- 移动端图片滚动加载-lazyload实现的要点总结
- Interleaving String leetcode java
- 转载:rebar和erlang
- 蓝桥杯试题集【Java】
- 反汇编看c++引用
- 小白的Python之路 day5 random模块和string模块详解
- 你真的理解 Spring Boot 项目中的 parent 吗?
- luoguP1941-
- PHP响应码和HTTP请求方法
- .NET代码混淆——开源.net 混淆器ConfuserEx介绍
- web打印控件Lodop轻松输出清晰的图表和条码
- Linux nohup命令应用简介--让Linux的进程不受终端影响
- IOC创建对象的几种方式
- vue学习之npm
- Object.defineProperty 与数据绑定的简单实现
- git学习-综合性文章
- 138. Copy List with Random Pointer (Graph, Map; DFS)