本文主要是介绍sql递归查询处理树状结构数据,适用于sqlserver和oracle,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在工作中用到根据某个组织的ID,查询当前所有的上级,并按层级返回
递归语法:
以with开头,再以2个查询用 union all连接,且2个查询列表字段和类型返回必须一致
向上查询数据,oo是最终返回的表,也可以写为with oo as ....
但是不能写为 with oo(FID,fname_l2 ,FPARENTID) 去掉某一个列表字段的值
会报错显示SQL 错误 [8158] [S0001]: 'oo' 中的列多于列列表中指定的列。
--向上with oo(FID,fname_l2 ,FPARENTID,FLEVEL) as(SELECTorg.FID,org.fname_l2,org.FPARENTID,org.FLEVELFROMT_ORG_ADMIN orgwhereorg.fnumber = 'tymatest1'union allselectt.FID,t.fname_l2,t.FPARENTID,t.FLEVELfromT_ORG_ADMIN tjoin oo on oo.FPARENTID = t.FID)SELECTdistinct *FROMoo
join oo on oo.FPARENTID = t.FID 代表2个表之间的连接关系,向上查询
以下语句代表向下查询
join oo on oo.fid = t.FPARENTID 代表2个表之间的连接关系,向下查询
with oo as(SELECTorg.FID,org.fname_l2,org.FPARENTID,org.FLEVELFROMT_ORG_ADMIN orgwhereorg.fnumber = 'tymatest1'union allselectt.FID,t.fname_l2,t.FPARENTID,t.FLEVELfromT_ORG_ADMIN tjoin oo on oo.fid = t.FPARENTID)SELECTdistinct *FROMoo
这篇关于sql递归查询处理树状结构数据,适用于sqlserver和oracle的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!