作者在 2016-10-31 15:53:19 发布以下内容
用地递归的方式处理数据的层级关系,是对with…as 的一个重要应用方式
drop table smMenu
create table smMenu (ID varchar(50),menuname varchar(50),menuclassname varchar(50),parentID varchar(50))insert into smMenu values('0','根目录','class0',null)
insert into smMenu values('01','销售管理','class01','0')
insert into smMenu values('0101','报价管理','class0101','01')
insert into smMenu values('010101','制订报价单','class010101','0101')
insert into smMenu values('010102','报价单查询','class010102','0101')
insert into smMenu values('0102','订单管理','class0102','01')
insert into smMenu values('010201','订单录入','class010201','0102')
insert into smMenu values('010202','订单审核','class010202','0102')
insert into smMenu values('02','计划管理','class02','0')
insert into smMenu values('0201','主计划','class0201','02')
insert into smMenu values('020101','MRP计划','class020101','0201');
with cte as
(
select a.ID,a.menuname,a.parentID from smMenu a where id='0'
union all
select k.ID,k.menuname,k.parentID from smMenu k inner join cte c on c.id = k.parentID
)
select * from cte order by id
注:Oracle,sqlserver,均支持;MySQL不支持这种临时视图,其他with…as结构应用参考https://weibo.com/5193584071/E5534cEdV