用一条SQL 语句 查询出每门课都大于80分的学生姓名,表格样式及数据如下
student
name course score
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
结果如下:
王五
解决:
--not in
SELECT DISTINCT A.name
FROM student A
WHERE A.name not in(
SELECT Distinct S.name
FROM student S
WHERE S.score <80
)
name
王五
--not exists
SELECT DISTINCT A.name
From student A
where not exists (
SELECT 1
From student S
Where S.score <80
AND S.name =A.name
)
name
王五
--另外使用having函数的方法
select name
from student
group by name
having min(score) >= 80
;
name
王五
备注:建表和数据
create table student(name varchar(30),course varchar(30),score int);
insert into student values('张三','语文',81);
insert into student values('张三','数学',75);
insert into student values('李四','语文',76);
insert into student values('李四','数学',90);
insert into student values('王五','语文',81);
insert into student values('王五','数学',100);
insert into student values('王五','英语',90);