zoukankan      html  css  js  c++  java
  • 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条数据。

  • 相关阅读:
    生成15位或者4位随机数 (主要用于微信支付订单号)
    支付签名 MD5Util 排序工具类
    JVM垃圾回收(GC)
    JVM内存区域
    Java实现经典七大经典排序算法
    Java设计模式之装饰者模式
    Java设计模式之单例模式
    提前批笔试一道算法题的Java实现
    Java设计模式之工厂模式
    文件上传和下载
  • 原文地址:https://www.cnblogs.com/shenxiaoquan/p/6114092.html
Copyright © 2011-2022 走看看