Oracle_Day2集合運算

我叫阿狸貓發表於2014-01-08


並集:

當A和B沒有交集的時候UNION和UNION ALL執行結果是一樣的

UNION :A和B都取,公共部分只取一次 

UNION ALL:A和B都取,公共部分各取一次。兩個集合就取兩次,三個就取三次。

交集:

INTERSECT:A和B公共部分

差集:

MINUS:只屬於A不屬於B的集合



使用集合運算需要注意的是:

1.參與運算的各個集合必須列數相同 且型別一致

2.採用第一個集合的表頭作為最後的表頭

3.如果排序,必須 在每個集合後使用相同order by

4.括號可以控制優先順序


下面這句sql語句是不能成功執行的,因為每個集合的運算的列數不同

select deptno,job,sum(sal) from emp group by deptno,job
union
select deptno,sum(sal) from emp group by deptno
union
select to_char(null),sum(sal) from emp;

如果希望上面的sql語句成功執行,就需要.將集合中不夠的列數補上,注意型別也要一致

select deptno,job,sum(sal) from emp group by deptno,job
union
select deptno,to_char(null),sum(sal) from emp group by deptno
union
select to_number(null),to_char(null),sum(sal) from emp;


相關文章