小编在这给大家讲讲WPS表格嵌套查询与连接查询
先来看一下这个文件的内容:
下面,我们还是采用查询学生课程.et这个文件来做查询:
示例1:查询与"刘晨"同学在同一个系学习的学生(显示学号、姓名、系名)
分析,先查出"刘晨"同学所在的系名,然后再由查出的系名查出最后结果,这里用到嵌套查询,请注意写法
SELECt [学号],[姓名],[所在系]
FROM [学生表$]
WHERe [所在系] IN
(
SELECt [所在系]
FROM [学生表$]
WHERe [姓名]='刘晨'
)
复制代码
另一个方法:在上面,子查询(括号部分)和父查询都是对同一张表进行的,我们如果将这张表想象成两张,让这两张表进行自身连接,也可以同样达到目的,这里我们用所在系这一项进行连接
SELECt [A].[学号],[A].[姓名],[A].[所在系]
FROM [学生表$] [A],[学生表$] [B]
WHERe [A].[所在系]=[B].[所在系] AND [B].[姓名]='刘晨'
复制代码
这里与前面不同的就是第二行:FROM [学生表$] [A],[学生表$] [B]
[学生表$] [A]的意思是为学生表这个表定义一个别名,名称为A,[学生表$] [B] 同理
这里的意思就是从查询A表的学号,姓名,所在系三项
查询的表格来自A表和B表
查询条件是让B表的姓名项为刘晨,并且让A表和B表根据所在系进行进行连接。
这其实和多表查询是一样的,只是这里的"多表"其实本质是同一个表的两个不同名称,我们称之为自表连接!
再来看一个例子:
示例2:查询选修了课程名为"信息系统"的学生学号和姓名
分析:先从第二个表课程表中查出"信息系统"这门课的课程号,然后由课程号在选课表中查出学生学号,再由这个学号到学生表中查出所需信息
SELECt [学号],[姓名]
FROM [学生表$]
WHERe [学号] IN
(
SELECt [学号]
FROM [选课表$]
WHERe [课程号] IN
(
SELECt [课程号]
FROM [课程表$]
WHERe [课程名]='信息系统'
)
)
复制代码
另一个方法,我们同样可以用连接查询来解决这个问题:
SELECt [学生表$].[学号],[姓名]
FROM [学生表$],[课程表$],[选课表$]
WHERe [学生表$].[学号]=[选课表$].[学号] AND
[选课表$].[课程号]=[课程表$].[课程号] AND
[课程表$].[课程名]='信息系统'
复制代码
总结:
1.在SQL语言中,对于比较复杂的查询,往往有多种方法可以选择,比较常用的就是嵌套查询与连接查询。
这两种方法都可以单表查询和多表查询。
2.相对于连接查询,嵌套查询语法结构比较有条理,思路清晰,更容易理解。
3.两种方法没有优劣之分,两者的查询原理不同(你会发现,在不排序的情况下,两种方法查询出来的结果显示顺序是不一样的)在特定的数据环境下,两种方法的效率是不同的,可能前者高,也可能后者高。所以数据库的管理者会根据不同的数据选择上述两种方法。
- 下一篇: 塔科马警方在回应枪击事件时缴获枪支和大量毒品
- 上一篇: 玩家必备家乡大贰有作弊码【抖音视频】