• oracle树根据parent_id生成parent_ids


    oracle 树形结构经常要通过parent_id生成parent_ids(当前节点路径)

    //根据parent_id生成parent_ids            
    update  sys_office
    set 
      parent_ids = (   
        SELECT parent_ids from
        (
          SELECT tt.id,  TRIM(LEADING ',' FROM  SYS_CONNECT_BY_PATH(tt.id, ','))  as parent_ids  from SYS_OFFICE  tt
          START WITH tt.parent_id='0'
          CONNECT BY PRIOR tt.id  =  tt.parent_id
        ) t
        where t.id = sys_office.id
      );

    在实际项目中数据量大时可能出现执行慢的情况,就分开处理,先生成一张中间表,再更新组织机构表。我在实际项目中遇到的情况是处理4w多条数据,不生成中间表执行了20分钟还没完成,于是停止执行,创建中间表,再更新,几分钟搞定。

    //根据parent_id生成parent_ids,数据量大的时候创建中间表        
      create table t_test as( SELECT id,parent_ids from
        (
          SELECT tt.id,  TRIM(LEADING ',' FROM  SYS_CONNECT_BY_PATH(tt.id, ','))  as parent_ids  from SYS_OFFICE  tt
          START WITH tt.parent_id='0'
          CONNECT BY PRIOR tt.id  =  tt.parent_id
        ) t )

    //更新组织表
        update sys_office o set o.parent_ids = (select t.parent_ids from t_test t where o.id=t.id)

  • 相关阅读:
    Spring_Bean的配置方式
    Nginx Ingress设置账号密码
    2.2.4 加减运算与溢出
    2.2.5-2 补码乘法
    2.2.3 移位运算
    flask钩子函数
    flask的cookie、session
    循环冗余校验码
    海明校验码
    python中的 __call__()
  • 原文地址:https://www.cnblogs.com/myjoan/p/11376195.html
Copyright © 2020-2023  润新知