Oracle 相关子查询
Posted
技术标签:
【中文标题】Oracle 相关子查询【英文标题】:Oracle correlated subquery 【发布时间】:2019-02-21 07:59:30 【问题描述】:我有一个包含字段的表:
USER_ID
MANAGER_USER_ID
COST_CENTER
我需要查询所有这些数据,但是COST_CENTER
应该来自经理,所以我做了这个:
select USER_ID, COST_CENTER, MANAGER_USER_ID
from EMDB e
where COST_CENTER in (
select COST_CENTER
from EMDB e2
where e2.USER_ID = e.MANAGER_USER_ID
);
样本数据:
USER_ID MANAGER_USER_ID COST_CENTER
user1 user3 employeeCostCenter1
user2 user3 employeeCostCenter1
user3 manager3 employeeCostCenter2 <-- this is manager
Sample output:
USER_ID MANAGER_USER_ID COST_CENTER
user1 user3 employeeCostCenter2
user1 user3 employeeCostCenter2
user3 manager3 costCenterOfManager3
但这不起作用(不返回任何内容)。 有什么建议吗?
【问题讨论】:
分享样本数据及其输出 所以三个都会输出 【参考方案1】:试试这个:
select e.USER_ID,
e.MANAGER_USER_ID
e2.COST_CENTER
from EMDB e
inner join EMDB e2 on e2.USER_ID = e.MANAGER_USER_ID
【讨论】:
【参考方案2】:你可以用这个:
SELECT e.user_id, e.manager_user_id, e2.cost_center
FROM emdb e
INNER JOIN emdb e2
ON e2.user_id = e.manager_user_id;
【讨论】:
【参考方案3】:下面是如何将子查询放在 select 子句中:
select
user_id,
manager_user_id,
(select cost_center from emdb m where m.user_id = e.manager_user_id) as cost_center
from emdb e
order by user_id;
【讨论】:
以上是关于Oracle 相关子查询的主要内容,如果未能解决你的问题,请参考以下文章