在工作中常常會遇到一些數據表包含父子關系的數據,比如行業、地區等等,如果需要將其節點按父子關系一步一步列出來,就需要使用connect by了。
如有由自身行業代碼basecode和父行業代碼parentcode構成父子關系的行業表tindustry:
如果想獲取“\申萬明細行業\農林牧漁\林業”這樣詳細的行業樹,就需要使用如下查詢:
SELECT BASECODE, SYS_CONNECT_BY_PATH(BASECODE, '\') AS INDU_CODE,
SYS_CONNECT_BY_PATH(BASENAME, '\') AS INDU_NAME
FROM TINDUSTRY
START WITH PARENTCODE IS NULL
CONNECT BY PRIOR BASECODE = PARENTCODE;
start with為起始的節點,connect by為父子關系。
查詢結果為如下: