首页 > 数据库 >oracle层次查询(通过自身id和managerid查询上下级)、子查询

oracle层次查询(通过自身id和managerid查询上下级)、子查询

时间:2022-08-16 16:14:15浏览次数:75  
标签:name employees managerid employee manager 197 oracle 查询 id

一、层次查询

employees表中有员工编号employess_id和该员工上级编号manager_id两个字段,manager_id就是上级的employee_id,通过这两个字段查找某员工的上级或者下级

select employee_id,first_name,last_name,manager_id,level from employees start with employee_id=197 connect by prior employee_id=manager_id;  
//寻找员工编号为employee_id=197的下级,level表示员工处于第几级,不是employees里面的字段,employee_id=manager_id就是递归查询manager_id是197的员工,start with employee_id=197表示从197号开始找下级

 select employee_id,first_name,last_name,manager_id,level from employees start with employee_id=197 connect by prior manager_id=employee_id;  
//寻找employee_id=197的上级,manager_id=employee_id就是递归查询employee_id=124的员工,124是197员工的上级编号

select sys_connect_by_path(first_name,'/') from employees start with employee_id=197 connect by prior manager_id=employee_id;
//通过sys_connect_by_path将上级的first_name连起来,相当于递归路径

employees表的创建参考链接https://i.cnblogs.com/posts/edit;postId=16169598

 

二、子查询

 select first_name,last_name from employees a where last_name in (select last_name from employees b where salary>10000); 
//last_name相当于一个家族的姓氏,查询薪资大于10000的家族的所有人
//等价于select first_name,last_name,salary from employees a where exists (select 1 from employees b where salary>10000 and a.last_name=b.last_name); exists检查返回是否为空

 当数据集a>b时用in;a<b时用exists

 

标签:name,employees,managerid,employee,manager,197,oracle,查询,id
From: https://www.cnblogs.com/muhai/p/16591924.html

相关文章

  • mybatis 14: 多对一关联查询
    业务背景根据订单id查询订单的信息,以及该订单所属的客户的基本信息(不包括该客户自己的订单信息)两张数据表客户表订单表实体类客户实体类:Customerpr......
  • BasicDBObject查询MongoDB
    1.查询举例//查询条件设置BasicDBObjectqueryCond=newBasicDBObject();//单个字段queryCond.put("data_source","诊断记录");//in的用法queryCond.put("p......
  • 连接 Oracle数据库 配置方法
    在java 代码中 配置oracle_url=jdbc:oracle:thin:@192.168.1.111:1521:orcloracle_username=sysassysdbaoracle_password=admindljjkoracle_jdbcName=oracle.jdb......
  • mysql子查询和连接查询_seata和普通XA模式的区别_nacos和eureka对比
    mysql子查询和连接查询首先是in和Exist的区别,in是对内查询的每个结果会去外层表里面进行循环,Exist则是对外层的记录去内层记录里面去遍历,所以如果外查询表比较大的话使用E......
  • 2022-08-16第二小组 张晟源(数据库查询)
    数据库(查询)DQL数据库查询语言DROPTABLEIFEXISTSstudentgoCREATETABLEstudent( idINT(10)PRIMARYKEY, `name`VARCHAR(10), ageINT(10)NOTNULL, gender......
  • MySQL循环处理查询结果
    1.insert_num将查询结果循环,并传入到下一个存储过程--创建存储过程之前需判断该存储过程是否已存在,若存在则删除DROPPROCEDUREIFEXISTSinsert_num;--创建存储过......
  • Javaweb08-Ajax项目-分页条件查询 + 增删改
    1、登录1.1登录form表单<formaction="<%=request.getContextPath()%>/loginAnime"method="get"><tableborder="1px"align="center"width="40%"cellspacing="......
  • sqlachemy查询
      语句 0.选择selectquery1.过滤(where)filter:空值和非空筛选is_ .isnotdao_session.sub_session().query(XcEbikeGfence2.id).filter(XcEbikeGfence2.type......
  • C#查询指定关键词和域名的百度搜索排名
    publicstaticvoidgetRank(){varpersonFaker=newFaker<RandomUA>().RuleFor(x=>x.userAgent,x=>x.Internet.UserAgent()......
  • 介绍几种常用的Oracle客户端工具
    首发微信公众号:SQL数据库运维原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1&sn=450e9e94fa709b5eeff0de371c62072b&chksm=ea37536cdd......