如何更换? oracle sql中的值如果在同一个oracle查询中多次使用相同的值

问题描述 投票:-1回答:2

例:

select * from employee, department 
where 
employee.empid=?
and department.empid=?

- ?用于获取employee.empid和department.empid的相同值。

感谢您的回答。

sql oracle birt
2个回答
0
投票

您可以使用WITH子句来选择参数,以便您可以在查询中访问它们,无论是在主查询中还是在某些子子查询中:

with params as
(
  select
    :emp_id as emp_id,
    :dept_id as dept_id
  from dual
)
select ...
from . ..
where x.emp_id = (select emp_id from params)
  and y.emp_id <> (select emp_id from params)
  and z.dept_id = (select dept_id from params);

1
投票

好吧,你的查询似乎是错误的,你的问题也没有多大意义。在我看来,你应该加入这些表并使用一个参数。例如,像这样:

select *
from employee e join department d on e.deptno = d.deptno
where d.deptno = :par_deptno

你想要EMPID作为参数;为什么?什么是EMPIDDEPARTMENT桌上做什么?它不属于那里。所以,你发布的任何一个例子都是错的,或者你不太明白你在做什么,或者......别的什么。

[编辑,评论后]

没有多大意义,但是 - 这就是你如何做到这一点(如果我明白你在说什么):

SQL> select e.deptno e_dept,
  2         d.deptno d_dept,
  3         d.dname,
  4         e.ename
  5  from emp e join dept d on e.deptno = d.deptno
  6  join (select 10 params from dual) p on e.deptno = p.params
  7                                     and d.deptno = p.params;

    E_DEPT     D_DEPT DNAME          ENAME
---------- ---------- -------------- ----------
        10         10 ACCOUNTING     CLARK
        10         10 ACCOUNTING     KING
        10         10 ACCOUNTING     MILLER

SQL>
© www.soinside.com 2019 - 2024. All rights reserved.