50个查询系列-第五个查询:查询没学过“叶平”老师课的同学的学号、姓名;...
查询没学过“叶平”老师课的同学的学号、姓名:
我们反着来 !不是要查没上过课的同学的名字吗。我们先查上叶平的课的学生。
思路:
1.先去查叶平上的课的课程id:
SELECT t1.courseid kid FROM tblcourse t1, (SELECT tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2WHERE t1.teaid=t2.tid -- 查出来叶平老师上的课的课程id
结果是:
2;去成绩表中(tblscore)查有这个课程id的学生。
SELECT tblscore.StuIdFROM tblscore,( SELECT t1.courseid kid FROM tblcourse t1, (SELECT tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2WHERE t1.teaid=t2.tid) ykid-- 查出来叶平老师上的课的课程idWHERE tblscore.CourseId=ykid.kid
结果如下:
我们可以看到上面的结果中有两个1013,这是因为这个学生有两门课都是叶平的课在查询时就查出来了。
我当时就很纠结,怎么才能把重复结果去掉呢。就一个1013好了。
后来我看了答案。答案也是这样的,两个1013
后来我对啊。我们最后查出来要的是不在这个列表里面的学生的id啊,那么这个列表里有几个重复的学生其实是没有关系的。
所以最后的写法就是:
SELECT *FROMtblstudentWHERE tblstudent.StuIdNOT IN(SELECT tblscore.StuIdFROM tblscore,( SELECT t1.courseid kid FROM tblcourse t1, (SELECT tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2WHERE t1.teaid=t2.tid) ykid-- 查出来叶平老师上的课的课程idWHERE tblscore.CourseId=ykid.kid )
查询结果:
答案的写法是:
SELECT StuId,StuName FROM tblStudentWHERE StuId NOT IN(SELECT StuID FROM tblScore scINNER JOIN tblCourse cu ON sc.CourseId=cu.CourseIdINNER JOIN tblTeacher tc ON cu.TeaId=tc.TeaId WHERE tc.TeaName='叶平')
扩展:
上面说到了重复记录怎么去除呢:用函数distinct
SELECT DISTINCT(t11.idd)FROM (SELECT tblscore.StuId iddFROM tblscore,( SELECT t1.courseid kid FROM tblcourse t1, (SELECT tblteacher.TeaId tid FROM tblteacher WHERE tblteacher.TeaName='叶平') t2WHERE t1.teaid=t2.tid) ykid-- 查出来叶平老师上的课的课程idWHERE tblscore.CourseId=ykid.kid )t11
结果:
就一个1013了。没有重复记录了。
50个查询系列-第五个查询:查询没学过“叶平”老师课的同学的学号、姓名;...相关推荐
- 6、查询学过“张三”老师所教的所有课的同学的学号、姓名(重点)
-- 6.查询学过"张三"老师所教的所有课的同学的学号.姓名(重点) SELECT d.s_id,d.s_name,a.t_name,c.c_id FROM teacher as ...
- 查询选修了课程表中所有课的同学的学号、姓名
[表名和字段] 有如下几个表,分析问题选择合适的表进行查询 1.学生表 student(sid,sname,gender,class_id) 学生编号,学生姓名,学生性别,班级编号 2.课程表cour ...
- 学习记录375@查询学过“谌燕”老师所教的所有课的同学的学号、姓名-MySQL
这玩意折磨了我一个小时,必须记录一下!解题思路和答案在最后. 相关表 CREATE DATABASE stumsc; CREATE TABLE student(sno VARCHAR(10) PRIM ...
- SQL基础系列(五)——子查询
子查询是在一个完整的查询语句中,嵌套不同功能的小查询,从而完成复杂查询的一种编写形式.本部分主要介绍非关联子查询,关联子查询的适用场景,语句写法,执行逻辑及相对应的注意事项. 目录 1.非关联子查询 ...
- 【原创】StreamInsight查询系列(十九)——查询模式之检测异常
上篇文章介绍了查询模式中如何发现趋势,这篇博文将介绍StreamInsight中如何检测异常. 测试数据准备 为了方便测试查询,我们首先准备一个静态的测试数据源: var now = DateTime ...
- oracle function 写查询语句_五个 SQL 查询性能测试题,只有 40% 及格率,你敢来挑战吗?...
作者 | 董旭阳TonyDong,CSDN 博客专家 责编 | 唐小引 头图 | CSDN 下载自东方 IC 出品 | CSDN 博客 下面是 5 个关于索引和 SQL 查询性能的测试题:其中 4 个 ...
- 【原创】StreamInsight查询系列(六)——基本查询操作之分组聚合
上篇博文介绍了StreamInsight基础查询操作中的用户自定义聚合部分.这篇文章将主要介绍如何在StreamInsight查询中使用分组聚合. 测试数据准备 为了方便测试查询,我们首先准备一个静态 ...
- SQL查询系列之六:SQL模糊查询
2019独角兽企业重金招聘Python工程师标准>>> 在SQL结构化查询语言中,LIKE语句有着至关重要的作用.LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式. ...
- 【原创】StreamInsight查询系列(三)——基本查询操作之过滤
上篇博文介绍了如何在LINQPad中输出StreamInsight查询结果.这篇文章将主要介绍StreamInsight基础查询操作中的过滤部分. 测试数据准备 为了方便测试查询,我们首先准备一个静态 ...
- 【原创】StreamInsight查询系列(十)——基本查询操作之联接
上篇博文介绍了StreamInsight基础查询操作中的决胜排序部分.这篇文章将主要介绍如何StreamInsight基本查询的最后一篇--联接. 测试数据准备 为了方便测试查询,我们首先准备一些静态 ...
最新文章
- vue路由对象($route)参数简介
- SSM-SpringMVC-30:SpringMVC中InitBinder的骇客级优化
- android 第三方加密软件,Android实用图文教程之代码混淆、第三方平台加固加密、渠道分发...
- 返回值带头信息 php_PHP注释标记的整理
- linux虚拟网桥配置nat,使用NAT在Proxmox VE 6上创建专用网桥的方法
- VDP文件级恢复需要在用VDP备份的机器上浏览
- sp_updatestats和update statistics的区别
- 领导给了一堆无序杂乱的数据,我写了个Python自动化脚本
- html运行显示无法发布,我无法发表文章当我打开发表文章,总在网页的左下角出现网页发生错误 爱问知识人...
- 信息系统项目管理通关指南
- 7 php 内存泄漏_APP内存优化之内存泄漏
- isql连接sybase_使用isql连接Sybase ASE数据库的常见错误及处理方式
- 概率论总结(《概率论与数理统计》第四版 浙江大学)
- canvas简易人机五子棋
- 实现监控摄像头RTSP视频流-Web端人脸识别-ffmpeg+websocket+jsmpeg方法总结
- 【快速幂取模】NOI 7833:幂的末尾
- 由于超过32位java限制_Java 32位Xmx vs java 64位Xmx
- 25A - IQ test
- netty对http协议解析原理解析
- 【板栗糖GIS】为什么内网穿透过的地址出现Tunnel not found