【问题标题】:MySql, exclude a subset with association tableMySql,排除带有关联表的子集
【发布时间】:2020-03-11 15:18:32
【问题描述】:

有 2 张桌子。表“students”,列“student_id”和“score”。关联表“class_student”与列“class_id”和“student_id”。如何列出班级所有学生成绩都在80以上的class_id。也就是说,如果班级有任何学生成绩低于80,则该班级将不会被列出。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    为此我会使用min()

    select cs.class_id
    from class_student cs join
         students s
         on s.student_id = cs.student_id
    group by cs.class_id
    having min(s.score) >= 80;
    

    【讨论】:

      【解决方案2】:

      按类别分组,只取那些没有符合您指定条件的记录的组

      select cs.class_id
      from class_student cs
      join students s on s.student_id = cs.student_id
      group by cs.class_id
      having sum(s.score < 80) = 0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 2018-07-21
        • 2015-04-27
        • 2014-11-07
        • 2016-07-22
        • 1970-01-01
        相关资源
        最近更新 更多