这个是Oracle的示例表,emp,dept。分别是14条和4条记录,c表2条。14x4x2=112条记录,这个c表中的manager和7839在emp表中是存在的,所以减去存在的3条记录,最后是109条记录。
目的是通过笛卡尔积补充数据。
其实我在做优化,只是不知道这个怎么改,真的好难啊。
a表1.5亿数据,b表13,c表2。这是40多亿的数据,然后在从中拿不存在的,
SELECT a.empno, a.deptno, a.ename, a.sal, c.job, c.mgr, b.deptno
FROM (SELECT DISTINCT empno, deptno, ename, sal FROM emp) a,
dept b,
(SELECT 'MANAGER' AS job, '9999' AS mgr
FROM dual
UNION ALL
SELECT 'MANAGER' AS job, '7839' AS mgr
FROM dual) c
WHERE NOT EXISTS (SELECT 1
FROM emp t
WHERE t.empno = a.empno
AND t.deptno = a.deptno
AND t.ename = a.ename
AND t.sal = a.sal
AND t.job = c.job
AND t.mgr = c.mgr
AND t.deptno = b.deptno);
怎么改写成外连接,保证数据量一样
新人没有币,见谅。