• MySQL嵌套,别名,分组查询


    有以下三张表:分别是课程表c,有课程号cno,课程名cname,课程类别cpro等

    学生信息表s,学号sno,姓名sname,性别ssex,年龄sage,班级sclass,籍贯jg

    成绩表sc,学号sno,课程号cno,成绩score。

    1.查询同时选修了c04和c05的同学的学号。

    我们在成绩表sc中可以发现,选修了c04课程的有060101,060102,070103,070301四人,选修了c05课程的有060101一人。所以同时选修了c04和c05课程的人只有060101

    通过sql语句查询,

    (1).嵌套查询,先查出选修了c05课程的人,再在选修了c05课程的人中查询选修c04的人:select sno from sc where cno='c04' and sno in(select sno from sc where cno='c05');

    只需要映射学号一列,select sno。来自表sc,form sc。 查询课程号为c04,并且学号为来自选修了c05的学号。sno in(查出的结果是选修了c05课程的学号)。选中,右击运行已选择的

    (2).临时修改表名查询,sc分别临时修改为两张表a和b,连接查询,join on。

    from sc a join sc b分别修改成两个命令a,b连接两个表的学号a.sno=b.sno。来自每张表的cno=c04和cno=c05,映射出a的学号a.sno
    select a.sno from sc a join sc b on a.sno=b.sno where a.cno='c04' and b.cno='c05';  如图

    2.统计选课人数超过3人的课程的课程号(cno)和选课人数(sno),分组(group by),统计学号大于3个人的

    分析:选课人数超过3人,有c01课程和c04课程都超过了3人,要映射出他们的课程号和人数

    语句:select cno 课程号,count(sno) 选课人数 from sc group by cno having count(sno)>3;

    要查出课程号和课程人数,即cno,sno,改个名字cno 课程号sno 选课人数

    在成绩表中,对课程分组,统计出分组后的学号个数大于3人的,如c01为1组,在c01中有060101,060102,070101,070301,统计学号的个数发现是4,满足赛选。反例:在c02课程组中,只有070101,080101两人,不满足count(sno)>3。如图:

    ----------end--------------

  • 相关阅读:
    程序员应该有什么职业素养?
    深入理解 MySQL 中的 CASE 语句:从基础到实战
    Flutter TextFiled频繁采集“剪切板信息”
    利用gpu加速神经网络算法,为什么用gpu 模型训练
    HarmonyOS NEXT应用开发案例——自定义TabBar
    ESP32(基于Arduino)连接EMQX的Mqtt服务器上传信息与命令控制
    JavaScript面向对象学习递归(三)
    localStorage实现历史记录搜索功能
    亚马逊EC2服务器搭建Linux系统宝塔环境
    基于秘密共享的MPC:GMW、BGV
  • 原文地址:https://blog.csdn.net/2301_78327423/article/details/139392651