SQLServer2005下的递归查询

 在SQLServer2005下,递归查询可以通过公共表达式(CTE)来实现。

如下所示:

WITH ColumnTree(projectId,parentId,columnId,columnName,columnUrl,ifDel,tag,clevel)AS(
 select
        projectId,
        parentId,
        columnId,
        columnName,
        columnUrl,
        ifDel,
        columnId as tag,
        0 as clevel
    FROM
        columnCms
    WHERE
        columnId=14

    UNION
    ALL

    SELECT
        p.projectId,
        p.parentId,
        p.columnId,
        p.columnName,
        p.columnUrl,
        p.ifDel,
        ch.tag,
        ch.clevel+1
    FROM
        columnCms p
    INNER JOIN
        ColumnTree ch
            ON ch.parentId=p.columnId

)

SELECT
            columnId
    FROM
        ColumnTree c
    WHERE
        c.ifDel=0
    ORDER BY
        c.clevel DESC

 

上面代码中,绿色的部分定义了递归的“根”,而橘黄色部分则执行的是递归查询。在递归公共表达式查询时,必须使用UNION ALL。定义好CTE后,就可以使用在CTE中定义的列(深蓝色部分)从CTE中查询。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值