zoukankan      html  css  js  c++  java
  • 求SQL语句递归的算法

    表结构是这样的

    部门    上级部门    
    A           B
    B           C
    C           D
    A           A
    B           B
    C           C

    求一条SQL语句,根据A查其上级部门,查询结果为
    上级部门
    B
    C
    D

    =================================================

    用函数
    create table tb (部门 varchar(20),上级部门 varchar(20))

    insert into tb select 'A','B' union all select 'B','C' union all select 'C','D' 
    union all select 'A','A' union all select 'B','B' union all select 'C','C'

    --select * from tb
    create function test_f (@name varchar(20))
    returns @ta table(上级部门 varchar(20))
    as 
    begin 
    --select @name=上级部门 from tb where 部门=@name and 部门!=上级部门
    while exists(select 1 from tb where 部门=@name and 部门!=上级部门)
    begin
    insert @ta select 上级部门 from tb where 部门=@name and 部门!=上级部门
    select @name=上级部门 from tb where 部门=@name and 部门!=上级部门
    end
    return
    end

    select * from dbo.test_f('A')

    删除:
    drop function test_f
    drop table tb

    上级部门                 
    -------------------- 
    B
    C
    D

    (所影响的行数为 3 行)

     
  • 相关阅读:
    Android 从上层到底层-----kernel层
    同时支持来自多个源头的域名的跨域调用
    Redis
    很好用的工具网站
    PHP array_combine()
    php 统计某个目录中所有文件的大小
    strchr()
    PHP $_SERVER
    Laravel5使用QQ邮箱发送邮件配置
    laravel 5.6
  • 原文地址:https://www.cnblogs.com/sosoft/p/3451118.html
Copyright © 2011-2022 走看看