今天遇到这么一个问题,要求拖拽树上的节点,更换父级机构并完成在新机构下排序功能,按下图来说,将“客户类型-城镇居民下的政府公职人员”拖拽到“使用状态”下,完成操作之后前台会给传一个当前机构的ID,新父级机构的ID,拖放完成后所在的位置,假设使用状态下“启用”和“停用”原来的排序是1和2,放的时候放在了“启用”后面,也就是新的被拖拽的“政府公职人员”的新排序是2,这个和停用的排序数是一样,这个时候进行排序的时候,就会出现他俩不确定哪个靠前的问题,然后就有了最下面的SQL,新手,有优化之处,请大牛指导

        sql.append(" UPDATE SYS_ORG A ");sql.append(" SET A.LEVELSORT =  ");sql.append("        (SELECT RN ");sql.append(" FROM (SELECT ROWNUM RN, ORGID, UPORGID, LEVELSORT ");sql.append("         FROM (SELECT ORGID, UPORGID, C.ORGNAME, LEVELSORT ");sql.append("                 FROM SYS_ORG C ");sql.append("                WHERE UPORGID = ? ");sql.append("                ORDER BY C.LEVELSORT, ");//这个地方是绕弯的方法,如果ID等于当前机构ID的时候,则进行进行排序,这样就保证了当前机构会排在与其Levelsort一样的机构前面sql.append("                 DECODE(C.ORGID, ?, C.ORGID))) B ");sql.append(" WHERE A.ORGID = B.ORGID) ");sql.append(" WHERE A.UPORGID = ? ");

SQL解析(从内往外分析):

  1. 首先按照目前的顺序(1,2,2)进行排序,然后在按照如果机构ID等于当前要处理的机构的ID,说明他是要往前排的,所以使用了DECODE(C.ORGID, ?, C.ORGID),也就是说如果查询的数据,机构ID等于当前机构ID,那就有值,如果不是,那就没值,这样排序下来就是排序顺序中出现相同排序序号的时候,当前处理机构更靠前(这个地方说一点,编写SQL的时候,是不建议在排序中使用运算的,有大牛帮忙给出个好的处理方式没)
  2. 获取对应的ROWNUM,根据内外ORGID相等的条件进行新顺序的更新

Oracle树形结构拖拽之插队重新排序相关推荐

  1. 【el-tree】树形结构拖拽

    之前做项目有遇到过使用el-tree的,但是树形结构拖拽还是第一次遇到,开始觉得会好难(心里暗示),因为考虑到好多种情况,做完之后其实还好,在此记录一下~ 首先,树形结构的拖拽--- <el-t ...

  2. Vue + Element 表格拖拽排序、树形表格拖拽排序

    今天给大家分享一下表格(列表)及树形表格拖拽排序,树形表格排序的教程不多,可能还会有问题,我在这里详细给大家讲解一下,如果你有这样的需求或觉得有用,请给个关注或收藏一下吧,方便后期查看使用. 安装so ...

  3. mysql 查询树形结构_MySql/Oracle树形结构查询

    Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...

  4. 树形可拖拽排序配置组件

    效果 使用场景 vue2下自定义表格表头配置: 列排序,显示/隐藏等.确保表头以配置项的形式加载,这样表格才能对修改后的配置作响应 思路 1.表格使用render函数加载(如有疑问可私信),通过类似如 ...

  5. oracle 树形结构表,树结构表递归查询在ORACLE和MSSQL中的实现方法

    树结构表:记录树形数据的二维数据表,包含"本节点ID"和"父节点ID" 经常需要进行递归查询某个节点下的所有节点数据 以下是分别在ORACLE和MSSQL中的实 ...

  6. Oracle树形结构查询之prior的理解

    --1 建表 create table 宇宙 ( 行星等级 number ,行星名称 varchar2(50) ,上级行星等级 number ); --2 数据准备 insert into 宇宙 (行 ...

  7. QML拖拽GridView元素重新排序示例

    import QtQuick 2.6 import QtQuick.Window 2.2Window {visible: truewidth: 1024height: 480title: qsTr(& ...

  8. 用elemet-ui组件实现弹窗里的树形结构和拖拽功能

    这个弹窗功能,主要是导出字段的设置,左边是树形字段结构,右边是选中的设置字段,字段可以拖动调顺序.我实现这个功能主要用的element-ui里的tree和dialog组件,及vuedraggable组 ...

  9. js使用input上传文件夹、拖拽上传文件夹并将文件夹结构展示为树形结构

    一.实现效果 左侧区域支持选择一个系统中的文件夹,或者将文件夹拖拽到这个区域进行上传,右侧区域可以将文件夹的结构展示为树形结构. 二.代码实现 由于需要使用树形插件zTree,这个插件是依赖于jque ...

  10. C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考

    为什么80%的码农都做不了架构师?>>>    应用软件是否好用就体现在一些细节操作上,开发人员是否考虑到了很多细节,例如一个树形结构的数据若不支持拖拽功能那用起来会很糟糕一些,用户 ...

最新文章

  1. vue-video-player有画面没声音_电视盒子没声音?问题都在这了!
  2. 遍历系统中所有的进程,可根据名字或ID查找某一个线程
  3. C++11 基于范围的 for 循环
  4. PAT甲级1103 Integer Factorization (30 分):[C++题解]背包问题,DP解法
  5. latex二元关系符号
  6. Android工程中R.java文件的重新生成——注意资源文件的错误
  7. bzoj2154(莫比乌斯反演)
  8. #pragma pack(push,1)与#pragma pack(1)的区别
  9. mysql 脚本安装工具_mysql 非安装版的一个自动安装脚本及工具(更新版)
  10. 最长反链(bzoj 1143: [CTSC2008]祭祀river)
  11. 牛市来了,我劝读者不要炒股他却骂我不地道...
  12. 浪曦全部视频【截至4月14日】
  13. Python贪吃蛇双人大战-升级版
  14. 计算机动画现状范文网,计算机动画教程
  15. L TEXT和 _T的区别
  16. 15. Python3 处理JSON格式数据(制作交易收盘价走势图)
  17. 你离大厂前端工作,升职加薪有时就差一点算法,今天全部教给你!
  18. 聊一聊微博新知博主这件事,看看赚钱方式有哪些?
  19. 问卷调查有哪些作用?
  20. 微信提现——企业付款到零钱demo(超详细小白都看得懂的)

热门文章

  1. 董事局主席董事长总裁首席执行官CEO总裁董事监事区别
  2. arm服务器的芯片编年史,64位ARM新篇章 历数史上经典64位处理器
  3. SQL(09)_UNIQUE 约束
  4. 毫秒转换成对应到达时间
  5. 在c语言中作为字符串结束标志是什么,字符串的结束标志是什么?
  6. 网上查信用报告,什么是数字证书验证?
  7. defineExpose暴露
  8. 论文中常见的argmin,argmax是什么意思?
  9. 项目管理-4-运筹帷幄
  10. Navicat使用总结(2022.9)