使用多列连接多个列

时间:2013-06-05 15:03:51

标签: sql oracle

当comm不为null时,我需要同时加入deptno和sal。我想出了以下内容。但它只接受deptno或sal。不是两个在同一时间。

select ename,deptno,sal,comm from emp where deptno,sal in(select sal,deptno from emp where comm is not null);

这是一个自我加入。

我在oracle 10g上尝试它

提前致谢。

3 个答案:

答案 0 :(得分:0)

您的目的不明确,虽然您似乎想使用IN编写多列半联接。在这种情况下,您只需添加括号:

SELECT ename, deptno, sal, comm 
  FROM emp 
 WHERE (sal, deptno) IN (SELECT sal, deptno FROM emp WHERE comm IS NOT NULL);

答案 1 :(得分:0)

您可以使用真正的联接:

SELECT e1.ename, e1.deptno, e1.sal, e1.comm
FROM emp e1
JOIN (SELECT distinct sal, deptno
      FROM emp
      WHERE comm IS NOT NULL) e2
ON e1.sal = e2.sal AND e1.deptno = e2.deptno

答案 2 :(得分:-1)

您的查询不应该像这样

select ename,deptno,sal,comm from emp where deptno,sal in(select deptno ,sal
from emp where comm is not null);