集合操作就是將兩個或者多個 sql 查詢的結果合并成復合查詢。常見的集合操作有UNION(并運算)、UNION ALL、INTERSECT(交運算)和MINUS(差運算)。
UNION
UNION 運算可以將多個查詢結果集相加,形成一個結果集, 其結果相當于集合運算的并運算. UNION 可以將第一個查詢結果的所有行與第二個結果集的所有行進行相加,行切消除所有的重復行.語法如下:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]UNIONSELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
例子: 查詢名字以 S 或者 M 開始的員工所有信息
select *from empwhere ename like 'S%'UNIONselect *from empwhere ename like 'M%';
UNION ALL
UNION ALL 的作用和 UNION 的作用極為相似不同之處就是形成的結果集包含其重復的部分。
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]UNION ALLSELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
例子:?查詢名字以 S 結尾或者 M 開始的員工所有信息
select *from empwhere ename like '%R'UNION ALLselect *from empwhere ename like 'M%';
INTERSECT
INTERSECT 也用于對兩個集合進行操作,與之不同的是用于取交集預算。語法如下:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]INTERSECTSELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
例子:?查詢名字以 R 結尾并且 M 開始的員工所有信息
select * from emp where ename like '%R' INTERSECT select * from emp where ename like 'M%';
MINUS
MINUS 用于查詢兩個集合的差集,也就是說該運算用于返回所有從第一個查詢中返回,但是沒有在第二個查詢中返回的記錄。語法如下:
SELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]MINUSSELECT column1 [, column2 ] FROM table1 [, table2 ] [WHERE condition]
例子:查詢名字以 R 結尾但是不以 M 開始的員工所有信息
select * from emp where ename like '%R' MINUS select * from emp where ename like 'M%';
?