Sql CTE 递归

 

 

--有几点需要注意的地方
--1.lmenu(menuname,id,pid,orderIndex) 递归的参数必须和select后面的字段相同并且类型相同
--2.必须有根节点,比如:SELECT menuname,id,pid,orderIndex FROM MenuList WHERE Pid=0  
--3.根节点下面的语句成为循环体,根结点和循环体必须使用 union all 连接
--4.循环体后面还可以追加 语句,使用union all连接
WITH lmenu(menuname,id,pid,orderIndex) as
 (
    SELECT menuname,id,pid,orderIndex FROM MenuList WHERE Pid=0
    UNION all
    SELECT  a.menuname,a.id,a.pid,a.orderIndex FROM MenuList A,lmenu b
    where a.pid = b.id 
) 
SELECT *  from lmenu order by orderIndex

 

posted on 2015-06-16 21:55  忙碌ing  阅读(158)  评论(0)    收藏  举报

导航