我需要选择所有属于学期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。
答案 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'
我认为不需要子选择。