我有源表和目标表,那么如何在不使用Oracle数据库中的minus
查询的情况下计算目标表中的丢失记录?
答案 0 :(得分:2)
您为什么不使用MINUS
?
这很简单:
SQL> select deptno from dept
2 minus
3 select deptno from emp;
DEPTNO
----------
40
这更复杂:
SQL> select d.deptno from dept d
2 where not exists (select null from emp e
3 where e.deptno = d.deptno);
DEPTNO
----------
40
SQL>
您说过不想使用MINUS
,但是-您从未说过不想使用INTERSECT
,所以:
SQL> select d.deptno from dept d
2 where d.deptno not in (select d1.deptno from dept d1
3 intersect
4 select e.deptno from emp e);
DEPTNO
----------
40
SQL>
甚至
SQL> select d.deptno from dept d
2 where d.deptno not in (select e.deptno from emp e
3 where e.deptno = d.deptno);
DEPTNO
----------
40
SQL>
或者这个:
SQL> select d.deptno
2 from dept d left join emp e on e.deptno = d.deptno
3 where e.deptno is null;
DEPTNO
----------
40
SQL>