使用left join查找用户的所有同事

延寿星君
• 阅读 1994

为了找出某个用户所在组织(部门)的所有员工,即该用户的所有同事包括他自己,常见的做法是通过用户找到他所在的组织(部门),然后再通过部门找到所有的员工。而我在实践中发现了另外一种做法,不知道好坏,仅供参考。

假设组织表my_organization

ID NAME IS_VALID
25afff89-dc6a-3169-153e-4c450f1181b5 Windows组 1
5cc8c3f2-7690-1332-4501-71bb0818d8ce Linux组 1

用户表my_user

ID NAME ORG_ID IS_VALID
01030437 林力 25afff89-dc6a-3169-153e-4c450f1181b5 1
01030445 王德培 25afff89-dc6a-3169-153e-4c450f1181b5 1
01030985 林晓坤 25afff89-dc6a-3169-153e-4c450f1181b5 1
01030775 张翔 25afff89-dc6a-3169-153e-4c450f1181b5 1
01030923 王晓芬 25afff89-dc6a-3169-153e-4c450f1181b5 1
01032375 高燃 5cc8c3f2-7690-1332-4501-71bb0818d8ce 1
01031924 曹丽 5cc8c3f2-7690-1332-4501-71bb0818d8ce 1

假设我们想找出林力同部门的所有的同事,可以这么写SQL

SELECT MU.ID, MU.NAME, MU.ORG_ID
FROM my_user MU
WHERE MU.ORG_ID = (
    SELECT ORG_ID FROM my_user 
    WHERE NAME = '林力'
}
-- WHERE MU.IS_VALID = 1

另外一种做法是使用left join

SELECT MU.ID, MU.NAME, MU.ORG_ID
FROM my_user MU
LEFT JOIN (
   SELECT ID, NAME, ORG_ID FROM my_user WHERE NAME = '林力'
) UU 
ON MU.ORG_ID = UU.ORG_ID

还有一种是误打误撞的,求高手解释

SELECT MU2.ID, MU2.NAME, MU2.ORG_ID 
FROM my_user MU1
LEFT JOIN my_user MU2
ON MU1.ORG_ID = MU2.ORG_ID
WHERE SU1.NAME = ''林力
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java递归查询公司下所有部门及子部门
引自:https://blog.csdn.net/u014079773/article/details/53338116业务要求:查询公司下所有子部门及子部门:原型:!(https://oscimg.oschina.net/oscnet/6ccaf7e5beab6031e35039496415359534e.png)1.创建公司和部门
Wesley13 Wesley13
3年前
java8lambda表达式对集合分组并且排序(记一次性能优化案例)
最近遇到个需求是这样的:写一个类似于通讯录的简单功能,要求是首先按照部门显示列表,然后点击部门下拉显示部门里面的人员信息,且人员信息按照职位排序。先分析数据结构:最外层是部门,部门里面是员工,且项目是统一返回数据格式。{   "code":0,   "data":\       {
虾米大王 虾米大王
2年前
java代码006
code006.jsp隐藏注释的应用用户名:虾米大王部门:Javaweb部门权限:系统管理员
Wesley13 Wesley13
3年前
oracle查询用户的权限
 DBA\_\描述的是数据库中的所有对象ALL\_\描述的是当前用户有访问权限的所有对象USER\_\描述的是当前用户所拥有的所有对象查看所有用户:select\fromdba\_users;  显示所有用户的详细信息select\froma
Wesley13 Wesley13
3年前
Java工作流引擎
1.关键字工作流开发框架权限设计、用户组、岗位、集团模式应用.java工作流程引擎,.net工作流引擎,工作流开发框架1.相关的表结构\相关组织\表结构。SELECTNo,Name,ParentNoFROMport\_dept;  部门。SELECTNo,Name,Adminer,AdminerNam
Wesley13 Wesley13
3年前
MySQL中实现递归查询
对于数据库中的树形结构数据,如部门表,有时候,我们需要知道某部门的所有下属部分或者某部分的所有上级部门,这时候就需要用到mysql的递归查询1、创建表按CtrlC复制代码按CtrlC复制代码2、初始数据!复制代码(https://oscimg.oschina.net/oscnet/435661e1cc6d1
Wesley13 Wesley13
3年前
oracle外连接
外连接\外链接是标准连接的扩展,它不仅会返回满足连接条件的所有记录,而且还会返回不满足条件的部分记录。\举例:\按部门统计员工的人数,要求显示:部门号,部门名称,人数!(https://images2018.cnblogs.com/blog/1417765/201809/141776520180912225049373108
Easter79 Easter79
3年前
Springmvc+mybatis+shiro+Dubbo+ZooKeeper+Redis+KafKa j2ee分布式架构核心技术
内置功能(只列了一部分功能)1.用户管理:用户是系统操作者,该功能主要完成系统用户配置。2.机构管理:配置系统组织机构(公司、部门、小组),树结构展现,可随意调整上下级。3.区域管理:系统城市区域模型,如:国家、省市、地市、区县的维护。4.菜单管理:配置系统菜单,操作权限,按钮权限标识等。5.角色管理:角色菜单权限分配、设置角色按机构进行
Stella981 Stella981
3年前
Hibernate关键字inverse和cascade
维护关联关系中,是否设置inverse属性:1.保存数据有影响。如果设置控制反转,即inversetrue,然后通过部门方维护关联关系。在保存部门的时候,同时保存员工,数据会保存,但关联关系不会维护。即外键字段为NULL2.获取数据无。3.解除关联关系?有影响。inverse
Wesley13 Wesley13
3年前
MySQL 实战
项目七:各部门工资最高的员工(难度:中等)创建Employee 表,包含所有员工信息,每个员工有其对应的 Id,salary和departmentId。|Id|Name|Salary|DepartmentId|
京东云开发者 京东云开发者
11个月前
【京东保险-技术平台部-平台研发部】一群AI卖保险的程序员
应【我在京东做产研】活动团队的邀约,想要介绍一下部门,用于面向新同事和潜在同事,分享团队的定位、职责、持续探索建设的方向、团队亮点\此类文章容易写得又红又专,思来想去,我还是写得尽量接地气一些,避免写成工作汇报体😅一、写在开头要介绍清楚我所在的部门【京东
延寿星君
延寿星君
Lv1
仰天大笑出门去,我辈岂是蓬蒿人。
文章
4
粉丝
0
获赞
0