50个查询系列-第一个查询

--问题:

--1、查询“001”课程比“002”课程成绩高的所有学生的学号;

第一步明确主表和次表。

我们要查询的是学生的学号,那么主表就是学生表(tblstudent)

但是我们要根据学生的成绩来筛选结果,所以我们的成绩表就是次表。

SELECT tblstudent.StuId

-- tblstudent是主表,我们从主表里面查询我们的学生学号。from tblstudent表示我们查出来的就是表里面的数据数量
 from tblstudent
 WHEre
-- tblscore是次表,我们用来筛选数据
 (SELECT TC.Score FROM tblscore TC WHERE TC.CourseId=‘001‘and tblstudent.StuId=tc.StuId)   >

(SELECT tb.Score FROM tblscore Tb WHERE Tb.CourseId=‘002‘ and tblstudent.StuId=Tb.StuId)

 /*
 我们来看一下
 (SELECT TC.Score FROM tblscore TC WHERE TC.CourseId=‘001‘and tblstudent.StuId=tc.StuId)
 这条语句为什么这么写的?
 首先我们去tblscore里面去查成绩,根据 TC.CourseId=‘001‘ 把所有的这门课的所有的学生的成绩查出来的成绩,查询结果是
 有多少个学生,就会有多少个结果,那肯定不行啊,我要一个一个学生比较的,那怎么办,用tblstudent.StuId=tc.StuId来做一个限制
 前面不是有很多个学生么,那么我这么一来,就做了一个限制,就只剩下一个学生了,也就是一个学生成绩了
 */
 

上面的where里面就是依次遍历的时候用成绩去做判断。

上面的方法就是子查询。

我们衍生开去,写别的sql语句看看。

比如:

select * FROM tblscore ,tblstudent   where tblscore.StuId=‘1001‘ and tblscore.CourseId=‘001‘

结果是:

22条语句。我们来分析:

FROM tblscore(55条) ,tblstudent(22)就这句话,我们产生的笛卡尔乘机就是tblscore的数据条数乘以tblstudetn的数据条数就是55*22=1210.

我们来看tblscore.StuId=‘1001‘那就是说我们的学生条数只有四条了(1001这个学只有四门课的成绩)+tblscore.CourseId=‘001‘:这么一来的话就只有一条数据了。因为学生表没有受到任何的限制,所以还是22条,然后这个条数(1条)乘以学生表的数据,那就是22条数据。

时间: 2024-11-06 15:05:14

50个查询系列-第一个查询的相关文章

【SqlServer系列】子查询

1   概述 1.1  已发布[SqlServer系列]文章 [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [SqlServer系列]表连接 1.2  本篇文章内容概要 子查询和表连接,主要是针对两张及以上表之间关联关系进行查询.子查询,按是否独立划分,分为独立子查询和相关子查询:按内部查询返回是否为单值,分为单值子查询(注意:应理解单值子查询和标量子查询关系)和多值子查询:如下表格内容为按子查询是否独立来划分

学习ASP.NET Core Razor 编程系列九——增加查询功能

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面 学习ASP.NET C

NHibernate系列文章二十五:NHibernate查询之Query Over查询(附程序下载)

摘要 这一篇文章介绍在NHibernate 3.2里引入的Query Over查询,Query Over查询跟Criteria查询类似.首先创建IQueryOver对象,然后通过调用该对象的API函数,进行对象查询.这篇文章使用Query Over重写之前所有的查询. 本篇文章的代码可以到NHibernate查询下载 1.创建IQueryOver对象,返回所有Customer信息 1 public IList<Customer> QueryAllOver() 2 { 3 return Sess

查询自第一天到第七天的销售记录(累集N天)

需求:查询商品(SKU)第一天到第七天的销售,第一天到第十四天的销售,-- 求解思路:1)查找SKU最早销售日期 2)查找第一天到第七天.第一天到第十四天销售数据 3)将这些数据的数量求和 在数据量达到数百万时,普通方法可能会直接拖垮服务器.为提高查询效率,公司DBA.架构师分别提供了两种解决方案(PS:本公司数据库受限制,不能使用存储过程). 第一种方案:1)求最小销售日期 2)(当前日期-最小销售日期)/7 获取第N周数据  3)求和 第二种方案:1)使用内存临时视图with as 计算最早

iPhone系列设备媒体查询:

这就引出一个问题,我们在对iPhone设备适配时候,又多出几种情况.iPhone系列设备媒体查询: @media only screen and (min-device-width: 320px){ //针对iPhone 3 } @media only screen and (min-device-width: 320px)and (-webkit-min-device-pixel-ratio: 2) { //针对iPhone 4, 5c,5s, 所有iPhone6的放大模式,个别iPhone6

Oracle系列七 子查询

子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询 (内查询) 在主查询之前一次执行完成. 子查询的结果被主查询(外查询)使用 . 示例: SELECT last_name FROM employees WHERE salary > ( SELECT salary FROM employees WHERE last_name = 'Abel' ); 注意事项 子查

Linux命令:MySQL系列之五--SELECT单表查询、多表查询升级及删除,插入

SELECT:查询 SELECT select-list FROM tb WHERE qualification  根据标准qualification查找对应的行 查询语句类型:  qualification条件  field领域  distinct独特的 简单查询: 多表查询: 子查询: SELECT * FROM tb_name: 查询tb_name表的所有信息 SELECT field1,field2 FROM tb_name: 投影显示所设定的领域条目(field),一个field就是一

MySQL---数据库从入门走上大神系列(四)-子查询、表与表之间的关系

本篇博客讲解(子查询)非相关子查询/相关子查询,一对一,一对多,多对一,多对的的关系! 准备: 首先我们创建一列sex.再为部分行设置好值0(女)或者1(男): delete from stud where age=26; 删除年龄为26的行. update stud set sex='1' where saddress like '湖南%'; 将地址中湖南开头的人的的sex修改为1. update stud set sex='0' where age>=30 and sex is null;

arcgis api for js入门开发系列四地图查询(含源代码)

备注:由于实现本篇功能的需求,修改了地图数据的dlsearch.mxd,然后更新了地图服务,需要的在文章最后有提供最新的mxd以及源代码下载的 上一篇实现了demo的地图工具栏,本篇新增地图查询功能,包括属性查询和空间查询两大块,截图如下: 属性查询效果图: 空间查询效果图: 谈核心代码实现之前,我大概的讲一讲arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTask (1)FindTask查询模式:基于关键字来模糊查询