1.UNION 和 UNION ALL
UNION去重且排序障斋,UNION ALL不去重不排序
Union因?yàn)橐M(jìn)行重復(fù)值掃描,所以效率低墨微。如果合并沒(méi)有刻意要?jiǎng)h除重復(fù)行嘀略,那么就使用Union All
兩個(gè)要聯(lián)合的SQL語(yǔ)句 字段個(gè)數(shù)必須一樣,而且字段類型要“相容”(一致)踩窖;
emp表
image.png
dept表
image.png
SELECT deptno FROM emp union select deptno from dept
image.png
SELECT DEPTNO FROM emp union ALL select deptno from dept
image.png
/*使用union和union all必須保證各個(gè)select 集合的結(jié)果有相同個(gè)數(shù)的列坡氯,并且每個(gè)列的類型是一樣的。
但列名則不一定需要相同洋腮,oracle會(huì)將第一個(gè)結(jié)果的列名作為結(jié)果集的列名箫柳。例如下面是一個(gè)例子:*/
select empno,ename from emp
union
select deptno,dname from dept
- 另外擴(kuò)展2個(gè)待以后研究
Union:對(duì)兩個(gè)結(jié)果集進(jìn)行并集操作,不包括重復(fù)行啥供,同時(shí)進(jìn)行默認(rèn)規(guī)則的排序悯恍;
Union All:對(duì)兩個(gè)結(jié)果集進(jìn)行并集操作,包括重復(fù)行伙狐,不進(jìn)行排序涮毫;
Intersect:對(duì)兩個(gè)結(jié)果集進(jìn)行交集操作,不包括重復(fù)行贷屎,同時(shí)進(jìn)行默認(rèn)規(guī)則的排序罢防;
Minus:對(duì)兩個(gè)結(jié)果集進(jìn)行差操作,不包括重復(fù)行唉侄,同時(shí)進(jìn)行默認(rèn)規(guī)則的排序咒吐。
使用 UNION 而不是 UNION ALL,則很可能會(huì)進(jìn)行一次排序操作属划,以便刪除重復(fù)項(xiàng)恬叹。當(dāng)處理大
型結(jié)果集的時(shí)候要想到這一點(diǎn)。大體而言榴嗅,使用 UNION 等同于針對(duì) UNION ALL 的輸出結(jié)果
再執(zhí)行一次 DISTINCT 操作妄呕,
SELECT DISTINCT
deptno
FROM
( SELECT deptno FROM emp UNION ALL SELECT deptno FROM dept )