sql server的递归查询

最近使用到了递归查询,用于地区查询,即传递一个地区的id,使用一条sql语句将传递的这个地区下面所有子地区以及子子地区全部查询出来,这个地区递归查询功能很多地方都会用到,这里记录下来,方便自己和朋友们使用;

sql如下:

WITH temp (areaid) AS (
    SELECT
        areaid
    FROM
        area
    WHERE
        areaid =340000
    UNION ALL
        SELECT
            a.areaid
        FROM
            area a
        INNER JOIN temp ON a.parentid = temp.areaid
) SELECT
    *
FROM
    temp

 

该查询语句的关键字为with as,union all.

该查询语句由两条select查询语句构成,第一条select语句只会执行一次,查出我们传进来的地区id参数对应的地区数据,将查询出来的结果集表赋到temp表中(temp表的表名可以自定义,temp表后面括号中的字段要和查出来的结果集中的字段相对应,并且括号里定义的字段,决定temp表中有哪些字段),然后执行第二条select语句,即   

SELECT
            a.areaid
        FROM
            area a
        INNER JOIN temp ON a.parentid = temp.areaid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值