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

时间:2018-09-09 19:53:51

标签: sql oracle birt

示例:

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

-?用来获得employee.empid和department.empid相同的值。

欣赏您的答案。

2 个答案:

答案 0 :(得分:1)

好吧,您的查询似乎是错误,您的问题也没有多大意义。我认为,您应该加入这些表并使用一个参数。例如,如下所示:

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

您希望使用EMPID作为参数;为什么? EMPID表中的DEPARTMENT在做什么?它只是不属于那里。因此,您发布的示例有误,或者您不太了解自己在做什么,或者还有其他事情。

[编辑,发表评论后]

没什么意义,但是-您可以按照以下方式进行操作(如果我理解您的意思):

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>

答案 1 :(得分: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);