如何从同一个表中选择不同的元组?我想找到一对在2个或更多课程中一起注册的学生。
表架构:注册(sid *,dname *,cno *,sectno *,grade)
答案 0 :(得分:2)
您可以执行自我加入。请注意,您必须在sid
上添加一个条件,这样您就不会将这些条件加倍(例如,获取[1, 3]
和[3, 1]
)。在这里,我决定左侧应该总是较低的数字,但你也可以采取另一种方式:
SELECT a.sid, b.sid
FROM enroll a
JOIN enroll b ON a.cno = b.cno AND a.sid < b.sid
GROUP BY a.sid, b.sid
HAVING COUNT(*) >= 2