题目
用一条SQL 语句 查询出每门课都大于80 分的学生姓名,表格样式及数据如下:
结果为:
参考答案
create table T20191110
(
name varchar(20),
course varchar(20),
score int
)
insert into T20191110 values('张三','语文',81);
insert into T20191110 values('张三','数学',75);
insert into T20191110 values('李四','语文',76);
insert into T20191110 values('李四','数学',90);
insert into T20191110 values('王五','语文',81);
insert into T20191110 values('王五','数学',100);
insert into T20191110 values('王五','英语',90);
--MySQL和SQL Server解法
--方法一:
select name from T20191110
group by name having min(score) > 80;
--方法二:
select distinct name from T20191110
where name not in(
select distinct name from T20191110
where score <=80
);
答案解析
解法一是通过找到每个学生的分数的最小值,当最小值都比80分大,那么就是该学生的所有课程分数都比80大
解法二是先找到有课程分数小于等于80分的学生,然后通过 NOT IN 来排除这些学生,同样可以达到题目的要求。