有一張表T_DEP,以ID和F_ID關聯,類似:
ID DEPNAME F_ID
1 總經室 -1
2 市場部 1
3 行政部 1
4 食堂 3
5 醫務室 3
形成了一個樹形結構,如果要在程序中進行一次遍歷,正常都會使用到遞歸,在oracel中可以使用CONNECT BY來直接進行遍歷
SELECT * FROM T_DEP CONNECT BY ID = PRIOR F_ID START WITH ID = 4
這條語句表示從ID = 4的部門開始,從樹的底部向上進行遍歷,結果為:
4 食堂 3
3 行政部 1
1 總經室 -1
SELECT * FROM T_DEP CONNECT BY PRIOR ID = F_ID START WITH ID = 3
這條語句表示從ID=3的部門開始,從上向下進行遍歷,結果為:
3 行政部 1
5 醫務室 3
4 食堂 3
在oracle中使用CONNECT BY 可以免去在程序中使用遞歸
ID DEPNAME F_ID
1 總經室 -1
2 市場部 1
3 行政部 1
4 食堂 3
5 醫務室 3
形成了一個樹形結構,如果要在程序中進行一次遍歷,正常都會使用到遞歸,在oracel中可以使用CONNECT BY來直接進行遍歷
SELECT * FROM T_DEP CONNECT BY ID = PRIOR F_ID START WITH ID = 4
這條語句表示從ID = 4的部門開始,從樹的底部向上進行遍歷,結果為:
4 食堂 3
3 行政部 1
1 總經室 -1
SELECT * FROM T_DEP CONNECT BY PRIOR ID = F_ID START WITH ID = 3
這條語句表示從ID=3的部門開始,從上向下進行遍歷,結果為:
3 行政部 1
5 醫務室 3
4 食堂 3
在oracle中使用CONNECT BY 可以免去在程序中使用遞歸
浙公網安備 33010602011771號