本题使用的是 MySQL8.0,没有在 MySQL5.6 版本中测验过,不保证正确。
题目
【day3 超过5名学生的课】查出超过或等于 5
名学生的课(学生的课不被重复计算)
create table courses (
student varchar(255),
class varchar(255)
)insert into courses values
('A', 'Math'),
('B', 'English'),
('C', 'Math'),
('D', 'Biology'),
('E', 'Math'),
('F', 'Computer'),
('G', 'Math'),
('H', 'Math'),
('I', 'Math');
SQL:方法一
select class from courses group by class having count(*) >= 5;
解析 题目来源:超过5名学生的课
学生的课不重复,所以按照
class
分组,在使用 having
筛选出大于等于 5
课的同学SQL:方法二
select class from (
select class, count(*) as num from courses group by class
) as c where num >= 5;
解析
- 首先查出每门课的学生人数,使用
group by
分组 - 把这次查询作为一个临时表
- 再次对这张表进行查询,筛选条件是人数大于等于
5
人。
推荐阅读
- mysql|InnoDB数据页结构
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- mysql|一文深入理解mysql
- Java毕业设计项目实战篇|Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- vue|电商后台管理系统(vue+python|node.js)
- Java及基础算法及数据结构|旧笔记整理(MySQL)
- mysql|双非本211硕,无实习无项目,自学大数据开发,秋招上岸
- 数据库|Mysql--InnoDB存储引擎详解
- MySQL学习笔记-9-order by