子查询,简称套娃查询

简介: 子查询,简称套娃查询
/*============== 子查询 ================ 
什么是子查询?    
在查询语句中的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'    ) )
相关文章
queryDsl多表联合查询,任意查询联合字段
这是我的通用方法 package com.spark.bitrade.service.Base; import com.querydsl.core.Tuple; import com.
4240 0
|
3月前
|
SQL 存储 数据挖掘
"SQL JOIN大揭秘:解锁多表联合查询的终极奥义,从内到外,左至右,全连接让你数据世界畅通无阻!"
【8月更文挑战第31天】在数据库领域,数据常分散在多个表中,而SQL JOIN操作如同桥梁,连接这些孤岛,使数据自由流动,编织成复杂的信息网络。本文通过对比内连接、左连接、右连接和全连接的不同类型,并结合示例代码,展示SQL JOIN的强大功能。掌握JOIN技术不仅能高效查询数据,更是数据分析和数据库管理的关键技能。
86 0
|
3月前
|
SQL 数据挖掘 数据库
SQL 子查询深度剖析来袭!嵌套查询竟有如此无限可能,带你轻松玩转复杂数据检索与操作!
【8月更文挑战第31天】在 SQL 中,子查询是一种强大的工具,允许在一个查询内嵌套另一个查询,从而实现复杂的数据检索和操作。子查询分为标量子查询、列子查询和行子查询,可用于 SELECT、FROM、WHERE 和 HAVING 子句中。例如,查找年龄大于平均年龄的学生或每个课程中成绩最高的学生。子查询具有灵活性、可重用性和潜在的性能优化优势,但需注意性能问题、可读性和数据库支持。合理使用子查询能够显著提升查询效率和代码维护性。
73 0
mongoose + express写自查寻接口时,以递归格式多级查询或aggregate查询
mongoose + express写自查寻接口时,以递归格式多级查询或aggregate查询
|
索引
子查询和在业务逻辑上顺序查询有多大区别
子查询和在业务逻辑上顺序查询有多大区别
82 0
|
SQL 存储 关系型数据库
Mysql数据库基础第八章:窗口函数和公用表表达式(CTE)
# 1.窗口函数 MySQL从8.0版本开始支持窗口函数。窗口函数的作用类似于在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是将结果置于每一条数据记录中。
Mysql数据库基础第八章:窗口函数和公用表表达式(CTE)
|
SQL 关系型数据库 MySQL
嵌套套娃,MySQL子查询,单行与多行子查询,相关和不相关(关联)子查询,完整详细可收藏
嵌套套娃,MySQL子查询,单行与多行子查询,相关和不相关(关联)子查询,完整详细可收藏
240 0
嵌套套娃,MySQL子查询,单行与多行子查询,相关和不相关(关联)子查询,完整详细可收藏
|
SQL 算法
多层嵌套子查询的unnesting算法解析
嵌套子查询的背景实践中,经常会遇到多层嵌套的SQL,并且多层嵌套之间包含有聚集函数,执行这类SQL的最简单的方法就是一层一层嵌套执行,类似于Nested Loop Join,对于外查询的每一行数据,就要将子查询执行一遍,如果子查询还有孙查询,子查询中的每一行,还要将孙查询执行一遍,……,显尔易见,这种执行方式的效率通常都比较低,尤其是当表的数据量很大时,对性能的影响非常明显。 下面是一个嵌套查询的
|
关系型数据库 MySQL 数据库
MySQL数据库:第十一章:合并查询(联合查询)
MySQL数据库:第十一章:合并查询(联合查询)
|
SQL 关系型数据库 MySQL
MySQL基础-标量子查询
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
342 0