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 行)

     
  • 相关阅读:
    73. Set Matrix Zeroes
    289. Game of Live
    212. Word Search II
    79. Word Search
    142. Linked List Cycle II
    141. Linked List Cycle
    287. Find the Duplicate Number
    260. Single Number III
    137. Single Number II
    Oracle EBS中有关Form的触发器的执行顺序
  • 原文地址:https://www.cnblogs.com/sosoft/p/3451118.html
Copyright © 2011-2022 走看看