• sqlserver 父子级查询(理念适应所有数据库)


     实现技术: 存储过程   ,零时表(3)

    一句话说完 :把父级查询下来的子级ID 保存成零时表,并且将符合子级ID数据添加到另一张零时表。

           同时清空数据时需要使用到一张零时表作为容器;


    alter PROCEDURE sel_sum
    @a int  
    AS
    BEGIN

    select  id,nodename ,pid  into #fz from treenodes  where  id=@a--创建零时表,并且将最上级id添加记录
    select id into  #array from treenodes  where  pid=@a --创建子id零时表,并且将子id添加到子id记录表
    select id into  #array2 from treenodes  where  pid=@a  --子id 临时表二

    while exists  ( select top(1) *  from #array) --如果下一级存在存在
    begin
    --将子级数据插入零时表  
    insert  into  #fz(id,nodename ,pid)   select  id,nodename ,pid
       from treenodes
        where  id  in (
      select  id from  #array  )
     
    delete #array2 ;   --清空零时表2
    insert     into  #array2  select * from   #array ;
     
    delete #array ; --清空
         --查询子级的下一级赋值给#array零时表   
    insert    into  #array  
    select id from   treenodes where pid  in(
        select  id from  #array2
       );
       
    end  

    select  * from #fz order by id
    end
     

    mysql  ,Oracle  原理相同

  • 相关阅读:
    Coding Souls团队第二阶段冲刺(三)
    Coding Souls团队第二阶段冲刺(二)
    第一阶段意见评价
    PHPMailer/PHPMailer的使用
    使用jquery.media.js实现pdf在线预览
    select2(前端选择框_框架)
    安装Docker CE+阿里云镜像仓库
    docker学习
    前端开发框架WeUI
    php _Markdown转HTML
  • 原文地址:https://www.cnblogs.com/j2ee-web-01/p/7156602.html
Copyright © 2020-2023  润新知