当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上尝试它
提前致谢。
答案 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);