以省市区为例,简单实现一下自关联表
其中id作为主键id,而parent_id作为父级id,以此形成表的自关联
简单理解就是浙江省的id是杭州市和温州市的parent_id,杭州市的id是下沙区,余杭区,钱塘区的parent_id,省的id是其中市的parent_id,市的id是其中区的parent_id
而这种表的查询可以用两种方式,第一种是子查询实现
查询浙江省杭州市下的所有区
逐级查询,条件设为自关联条件,也就是parent_id,按照区市省的层级关系做层级间的子查询
SELECT name from node where parent_id =
(SELECT id from node where name ='杭州市' and parent_id =
(SELECT id from node where name ='浙江省' and parent_id=0));
还有一种更容易理解的方式,做多表查询
分为三张表做关联,用自关联条件prent_id作为表连接关系,n3.parent_id = n2.id and n2.parent_id =n1.id,n1作为省表,n2作为市表,n3作为区表,这种对我而言更方便理解