sql 获取所有科目均及格的学生姓名

sql get students names who passed in all subjects

我有3张桌子

学生(id,姓名)

主题(id,姓名)

student_subjects(student_id,subject_id,标记)

我想select所有科目及格的学生姓名(所有科目分数>=50)

我试过这个:

SELECT DISTINCT s.NAME
FROM STUDENT_SUBJECTS sb,
  STUDENTS s,
  SUBJECTS b
WHERE s.ID   = sb.STUDENT_ID
AND b.ID     = sb.SUBJECT_ID
AND sb.MARK >= 50

但是这会得到任何科目大于或等于 50 的学生 有没有办法只得到通过所有科目的学生的名字?

这应该有效:

SELECT s.NAME
FROM STUDENT_SUBJECTS sb,
  STUDENTS s,
  SUBJECTS b
WHERE s.ID   = sb.STUDENT_ID
AND b.ID     = sb.SUBJECT_ID
GROUP BY S.NAME
HAVING MIN(SB.MARK)>=50

如果有两个同名的学生也按id分组:

SELECT s.NAME
FROM STUDENT_SUBJECTS sb,
  STUDENTS s,
  SUBJECTS b
WHERE s.ID   = sb.STUDENT_ID
AND b.ID     = sb.SUBJECT_ID
GROUP BY S.ID,S.NAME
HAVING MIN(SB.MARK)>=50