【Oralce语法】使用connect by,level,prior显示员工的等级关系

有一张emp3表,表结构如下:

create table emp3(
  id int,
  mngid int,
  name nvarchar2(20),
  primary key(id));

其中mngid是他上级的id号,有了这个谁被谁管一目了然。

然后可以插点值:

复制代码
insert into emp3(id,mngid,name) values('1',NULL,'Andy');
insert into emp3(id,mngid,name) values('2',1,'Bill');
insert into emp3(id,mngid,name) values('3',1,'Cindy');
insert into emp3(id,mngid,name) values('4',2,'Douglas');
insert into emp3(id,mngid,name) values('5',2,'Edin');
insert into emp3(id,mngid,name) values('6',3,'Felix');
insert into emp3(id,mngid,name) values('7',3,'Green');
insert into emp3(id,mngid,name) values('8',6,'Hitler');
insert into emp3(id,mngid,name) values('9',6,'Idiot');
insert into emp3(id,mngid,name) values('10',8,'Jeep');
insert into emp3(id,mngid,name) values('11',9,'King');
insert into emp3(id,mngid,name) values('12',11,'Linconn');
复制代码

最后看看层级关系,看看谁看谁的脑袋,谁看谁的屁股。

使用的核心SQL语句是:

select id,level,lpad(' ',(level-1)*3)||name as name
    from emp3
    start with mngid is NULL
    connect by mngid=prior id;

运行结果:

复制代码
    SQL> select id,level,lpad(' ',(level-1)*3)||name as name
  2      from emp3
  3      start with mngid is NULL
  4      connect by mngid=prior id;

        ID      LEVEL NAME
---------- ---------- ----------------------------------------
         1          1 Andy
         2          2    Bill
         4          3       Douglas
         5          3       Edin
         3          2    Cindy
         6          3       Felix
         8          4          Hitler
        10          5             Jeep
         9          4          Idiot
        11          5             King
        12          6                Linconn
         7          3       Green

已选择12行。
复制代码

由上可见,Andy是塔尖,下面是Bill和Cindy,Douglas\Edin\Felix\Green在第三层,其余的大家自己看。

一棵猴子爬树,其中多少血泪和无奈、以及不为人知的丑闻、甚至不可告人的秘密....

--END--

posted @   逆火狂飙  阅读(256)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2018-08-26 【Canvas与艺术】正方形和正三角形瓷砖的镶嵌图案
2017-08-26 【Canvas与诗词】北岛诗《献给遇罗克》节选(以太阳的名义...)
2017-08-26 在cmd窗口输入命令遇到You must run this command from a command prompt with administrator privilege怎么办?
2016-08-26 如何消除MyEclipse导入jQuery库后出现的错误标记
2013-08-26 在Ubuntu 桌面版 12.04 LTS安装并运行SSH
2013-08-26 将Tp-link无线路由器桥接到Dlink无线路由器上
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示