介绍
自连接查询,可以是内连接查询,也可以是外连接查询,一句话自己连接自己,一个表当作两个表进行连接。
语法
SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件
两个表A说明是同一张表,但是别名不同
案例
有一张学生表,共4个字段
id:主键
name:学生名字
classes:班级关联(无视即可)
team_id:学生可以分成小组,而一个小组有一个队长,这个关联着主键的ID也就是组长
需求:查询某一个人时,把组长名称和ID一起查出来
SELECT a.*,b.name FROM students a,students b WHERE a.id=2 and b.id=a.team_id
这就自连接,自己连接自己,当成两张表查询
这种方法有缺陷,如果员工没有领导(CEO)那么就会无法查询,查询卢本伟的数据而他的领导是NULL
SELECT a.*,b.name FROM students a,students b WHERE a.id=1 and b.id=a.team_id
这时就可以使用外连接进行查询
SELECT a.*,b.name FROM students a JOIN students b ON a.id=1 and b.id=a.id