当我与同一个表中的一组结果进行比较时,如何显示所有重复的结果

时间:2014-03-25 16:11:47

标签: mysql sql

我需要选择所有属于学期A的学生,并且是学生注册表中不同群体的一部分,并比较这些结果并检查他们是否已注册除了A期以外的任何其他术语,并且他们是否有类似的组。如果他们有不同的组,那么我需要显示术语A的结果和A

以外的术语结果
> SELECT sra.studentid,sra.StudentName,sra.Term,sra.Group
 FROM StudentReg sra
join (select * from 
(SELECT sra1.studentid,sra1.StudentName,sra1.Term,sra1.Group
FROM StudentReg sra1
)mq where mq.Term <> 'A'
)sra1 on sra.StudentID=sra1.StudentID       
where sra.Term='A'

这仅显示在术语A中注册了相同组的结果。但是我需要显示它们中的两个,一个来自术语A,一个具有相同的组,而不是A。

1 个答案:

答案 0 :(得分:0)

您的第一个选择中只有表sra中的字段,适用于输出。因此,将您的sra1字段列表也添加到此选择中:

SELECT sra.studentid,sra.StudentName,sra.Term,sra.Group,
sra1.studentid,sra1.StudentName,sra1.Term,sra1.Group
 FROM StudentReg sra
join (select * from 
(SELECT sra1.studentid,sra1.StudentName,sra1.Term,sra1.Group
FROM StudentReg sra1
)mq where mq.Term <> 'A'
)sra1 on sra.StudentID=sra1.StudentID       
where sra.Term='A'

这应该导致数据输出到A项和A以外的术语。

您的陈述可能更简单:

SELECT sra.studentid,sra.StudentName,sra.Term,sra.Group, 
  sra1.studentid,sra1.StudentName,sra1.Term,sra1.Group
  FROM StudentReg sra
  JOIN StudentReg sra1 on sra.StudentID=sra1.StudentID       
WHERE sra.Term='A' and sra1.Term <> 'A'

我认为不需要子选择。