2. union All:對兩個結果集進行並集操作,包括重複行,不進行排序;
3. intersect:對兩個結果集進行交集操作,不包括重複行,同時進行默認規則的排序;
4. minus:對兩個結果集進行差操作,不包括重複行,同時進行默認規則的排序。
可以在最後一個結果集中指定Order by子句改變排序方式。
例:
SELECT * FROM emp
WHERE sal < 1500
UNION
SELECT * FROM emp
WHERE sal BETWEEN 1000 AND 2000
ORDER BY 1;
以上爲在同一張表中進行的兩次查詢,在不同的表之間也可以進行查詢,只要結果列數據類型相同
創建表myemp1和myemp2
myemp1中的ename,sal 和 myemp2中的ename,pay數據類型相同(字符長度不同,列名不同也可以)
create table myemp1(
id number primary key,
ename varchar2(20),
sal number
);
create table myemp2(
id number primary key,
ename varchar2(30),
pay number
);
表:
1.union
SELECT ename,sal "sal or pay" FROM myemp1
WHERE sal >600
UNION
SELECT ename,pay FROM myemp2
WHERE pay BETWEEN 600 AND 2000
ORDER BY 1;
2.union all
SELECT ename,sal "sal or pay" FROM myemp1
WHERE sal >600
UNION ALL
SELECT ename,pay FROM myemp2
WHERE pay BETWEEN 600 AND 2000
ORDER BY 1;
3.intersect
SELECT ename,sal "sal or pay" FROM myemp1
WHERE sal >600
intersect
SELECT ename,pay FROM myemp2
WHERE pay BETWEEN 600 AND 2000
ORDER BY 1;
4.minus
SELECT ename,sal "sal or pay" FROM myemp1
WHERE sal >600
minus
SELECT ename,pay FROM myemp2
WHERE pay BETWEEN 600 AND 2000
ORDER BY 1;