自关联查询
自关联,又叫自连接。它常见的应用场景,就是省市区的查询。
省市区的信息,一般不会像其它表一样分开放在不同的表里进行存储,而是放在一个表里。 比如这个表结构:
aid是atitle的自有id。
pid是这个atitle对应的的所属的市。如果它本身是一个省就是null 这种就是所谓的自关联。
例1:省市自关联查询
select * from area as a1 inner join area as a2 on a1.aid = a2.pid
返回的结果就是下面的图:
例2 :查询河南省的所有市和区的关联表
注意:因为有些市没有对应的区,但是我们应该显示出来,所以使用左连接。
select * from area as a1 inner join area as a2 on a1.aid = a2.pid
left join area as a3 on a2.aid = a3.pid
where a1.atitle ='河南省'
总结:
1 自关联要用别名,通过别名关联自身
2 自关联的关键词和内连接是一样的,inner join关联同一张表,不同的字段。
3 如果有一些特殊的情况的话,要考虑到null的存在是否影响数据,如果影响的话适当的使用left join左连接
4 自关联起别名理论上是无限关联的,可以根据需求多次使用内连接去进行自关联