自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据
自连接是指一个表与其自身进行连接。
举一个简单的实例,一个学生课程成绩表StudentScore,其中包括学生编号/studentid,所选课程/coursename,课程成绩/score
选择每门课程的前两名学生,并将他信息输出出来
此时你的第一反应就是要把学生按所选课程进行分组,然后比较获得每门课程里面前两位的学生
分组的方式有group by,但是使用group by时,必须聚合函数,所以不适合用在此处
另外一种方式就是使用自连接
sql代码如下:
Select * from StudentScore as a
where a.studentid in (select top 2 b.studentid from StudentScore as b where a.coursename=b.coursename order by scorce desc)
自连接可以通俗的理解为可以按照某个字段进行分组。