查询每门成绩都大于80分的同学学号,假设成绩表中存了学生学号sno、课程编号cno、成绩degree。
关于这个题目的四种解题思路,如下:
1、按学号分组,然后找最低分大于80分的
SELECT sno
FROM score
GROUP BY sno
HAVING min(degree)>80;
2、先找出成绩存在80分以下的,然后再排除
SELECT DISTINCT sno
FROM score
WHERE sno NOT in(SELECT sno
FROM score
WHERE degree<=80);
3、使用EXISTS
SELECT sno
FROM score a
WHERE NOT EXISTS (SELECT sno
FROM score b
WHERE degree<=80 AND a.sno=b.sno)
4、找出所有成绩都大于80分
SELECT DISTINCT sno
FROM score a
WHERE 80<all(SELECT degree FROM score b WHERE a.sno=b.sno )