### 子查询

>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'
)
)
```

最新文章

  1. docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
  2. [SQL] SQL 基础知识梳理(三) - 聚合和排序
  3. .NET面试题系列[12] - C# 3.0 LINQ的准备工作
  4. 移动端图片滚动加载-lazyload实现的要点总结
  5. Interleaving String leetcode java
  6. 转载:rebar和erlang
  7. 蓝桥杯试题集【Java】
  8. 反汇编看c++引用
  9. 小白的Python之路 day5 random模块和string模块详解
  10. 你真的理解 Spring Boot 项目中的 parent 吗?
  11. luoguP1941-
  12. PHP响应码和HTTP请求方法
  13. .NET代码混淆——开源.net 混淆器ConfuserEx介绍
  14. web打印控件Lodop轻松输出清晰的图表和条码
  15. Linux nohup命令应用简介--让Linux的进程不受终端影响
  16. IOC创建对象的几种方式
  17. vue学习之npm
  18. Object.defineProperty 与数据绑定的简单实现
  19. git学习-综合性文章
  20. 138. Copy List with Random Pointer (Graph, Map; DFS)

热门文章

  1. shell--检查apache是否启动脚本
  2. 三、TestNG的基本注解(1)
  3. 七、Jmeter测试元件-线程
  4. vue中的样式绑定
  5. 牛客挑战赛46 B
  6. mysql位函数的使用
  7. js上 四、数据类型转换
  8. AddressSanitizer —— ASAN分析内存错误
  9. MyBatis史上最全文章
  10. C#中的深度学习(三):理解神经网络结构