第一種方案,當id類型爲整型時:select
咱們除了有一個記錄父id字段外,還應有一個路徑的字段如部門:detp(id , pid , path , name)。則有記錄以下:數據
1 , 0 , '/0/1' , '部門A'
2 , 0 , '/0/2' , '部門B'
3, 1 , '/0/1/3', '部門A.01'
4, 2 , '/0/2/4', '部門B.01'
5, 3 , '/0/1/3/5', '部門A.01.a'
...
當多了path字段後,能夠更加便捷的查詢瞭如:查詢
已知當前部門 xxx_dept(5, 3 , '/0/1/3/5', '部門A.01.a')path
1.查詢其同部門
select * from xxx_dept where pid = 3;
2.查詢其子部門
select * from xxx_dept where path like '/0/1/3/5%'
3.查詢其父部門
select * from xxx_dept where '/0/1/3/5' like path+'%'
4.一樣刪除也就變得簡單了
當id 爲char時
這時咱們就在id這裏作改造了,表結果 xxx_dept(id,pId,name),有以下數據:
'001' , '0' , '部門' '00101' , '001' , '部門A' '00102', '001' , '部門B' '0010201','00102' , '部門B1' ... 這時的結構就與上面差很少了,查詢方式也差很少了