1.UNION 和 UNION ALL
UNION去重且排序,UNION ALL不去重不排序
Union因為要進(jìn)行重復(fù)值掃描,所以效率低。如果合并沒有刻意要刪除重復(fù)行,那么就使用Union All
兩個要聯(lián)合的SQL語句 字段個數(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必須保證各個select 集合的結(jié)果有相同個數(shù)的列,并且每個列的類型是一樣的。
但列名則不一定需要相同,oracle會將第一個結(jié)果的列名作為結(jié)果集的列名。例如下面是一個例子:*/
select empno,ename from emp
union
select deptno,dname from dept
- 另外擴(kuò)展2個待以后研究
Union:對兩個結(jié)果集進(jìn)行并集操作,不包括重復(fù)行,同時進(jìn)行默認(rèn)規(guī)則的排序;
Union All:對兩個結(jié)果集進(jìn)行并集操作,包括重復(fù)行,不進(jìn)行排序;
Intersect:對兩個結(jié)果集進(jìn)行交集操作,不包括重復(fù)行,同時進(jìn)行默認(rèn)規(guī)則的排序;
Minus:對兩個結(jié)果集進(jìn)行差操作,不包括重復(fù)行,同時進(jìn)行默認(rèn)規(guī)則的排序。
使用 UNION 而不是 UNION ALL,則很可能會進(jìn)行一次排序操作,以便刪除重復(fù)項。當(dāng)處理大
型結(jié)果集的時候要想到這一點(diǎn)。大體而言,使用 UNION 等同于針對 UNION ALL 的輸出結(jié)果
再執(zhí)行一次 DISTINCT 操作,
SELECT DISTINCT
deptno
FROM
( SELECT deptno FROM emp UNION ALL SELECT deptno FROM dept )