先执行父查询并将条件传递给子查询

问题描述 投票:0回答:1

我需要先执行父sql查询并将条件传递给子查询:

select 
    emp_id, dept_location from Department dept, (select * from  employee) emp 
where emp.dept_no=dept_no and dept.name ="Finance" 

在上面的例子中,我不希望先获取员工表中的所有记录,然后应用连接条件。我正在寻找一个查询提示,它仅在子查询中获取财务部门的记录。

sql oracle
1个回答
0
投票

只需连接两个查询,不要使用子查询:

SELECT emp.emp_id,
       dept.dept_location
FROM   Department dept
       INNER JOIN employee emp 
       ON emp.dept_no = dept.dept_no
WHERE  dept.name = 'Finance'

如果您愿意,可以使用

LATERAL
连接(但
INNER JOIN
更简单并且可能更高效):

SELECT emp.emp_id,
       dept.dept_location
FROM   Department dept
       CROSS JOIN LATERAL (
         SELECT *
         FROM   employee emp 
         WHERE  emp.dept_no = dept.dept_no
       ) emp
WHERE  dept.name = 'Finance'
© www.soinside.com 2019 - 2024. All rights reserved.