Mysql 如何找到在整个考试期间在同一日期有多个考试的所有学生

Mysql 如何找到在整个考试期间在同一日期有多个考试的所有学生,mysql,sql,Mysql,Sql,我有一个由学生编号、科目、考试日期组成的表,通过使用此查询,我可以找到有多个考试的学生 SELECT student_number, subject, exam_date FROM tables WHERE dates ='01-01-2019' And student_number IN ( SELECT student_number FROM tables WHERE dates ="01-01-2019"

我有一个由学生编号、科目、考试日期组成的表,通过使用此查询,我可以找到有多个考试的学生

SELECT 
     student_number, subject, exam_date
FROM 
     tables
WHERE 
    dates ='01-01-2019' And 
    student_number IN (
         SELECT student_number
         FROM tables WHERE dates ="01-01-2019"
         GROUP BY student_number
         HAVING COUNT(student_number) > 1
         )  

但是,我希望找到在考试日期列表的整个期间内,在同一日期有多个考试的所有学生,而不是单独键入每个日期

您与您的团队非常接近

SELECT student_number, exam_date
FROM tables
GROUP BY student_number, exam_date
HAVING count(*)>1

这应该让你开始,你和你的小组有了正确的想法…

我想如果一个学生在同一天有多个考试,这些考试将在不同的科目上。 因此,您可以使用EXISTS获取所需:

SELECT student_number, subject, exam_date
FROM tables t
WHERE EXISTS (
  SELECT 1 FROM tables
  WHERE 
    student_number = t.student_number
    AND
    exam_date = t.exam_date
    AND
    subject <> t.subject
)