要找出一张表中每门课都大于80分的学生的名字,可以使用 SQL 中的 GROUP BY 和 HAVING 子句。假设有一个表叫 scores,包含学生姓名 (student_name)、课程名称 (course_name) 和分数 (score),可以使用如下 SQL 查询:
SELECT student_name
FROM scores
GROUP BY student_name
HAVING MIN(score) > 80;
这条 SQL 查询首先按学生姓名进行分组,然后使用 HAVING 子句确保每个学生的最低分数都大于80。这样就能筛选出每门课都大于80分的学生名字。
还有其他方法吗?
SELECT DISTINCT student_name FROM scores s1 WHERE NOT EXISTS ( SELECT course_name FROM scores s2 WHERE s2.student_name = s1.student_name AND s2.score <= 80 );