集合運算子
Union(聯集):垂直合併兩資料表。(沒有重複資料)Union All(聯集):垂直合併兩資料表。(有重複資料)Except(差集):只取「第一個 select」但不存在「第二個 select」的資料。
將 table1 的資料減去 table2的資料 (相當於是減法運算的概念)Intersect(交集):將兩資料表相同的資料取出來 (無重複的資料)。
找出 table1 和 table2 相同的資料
1
2
3
4
select column_name1, column_name2 from table1
union -- union all, except, intersect
select column_name3, null from table1 --欄位數量要相同,沒有的欄位用null使其相同
order by 1 --欄位名不同,可指定編號排序
- 每個
select語句的「欄位數量」要一致。(欄位名可以不相同)
沒有的欄位可以加上null使其數量相同。- 每個
select語句對應的欄位,「資料型態」必須要相同。返回結果的資料集欄位名稱,通常會依據「第一個
SELECT」查詢的欄位名稱。若要對結果集進行排序,當每個
select語法中的欄位名有所不同時,就要在order by語法中指定「欄位編號」,比如 order by 1就會按第一個欄位排序。
Union 聯集
無重複列Row
垂直合併兩資料表(無重複資料)
將2個資料表的紀錄垂直結合在一起,會過濾掉兩個結果集重複的資料,只保留一筆(有重複的資料只會顯示其中一筆)。
UNION與JOIN不同的地方在於:
JOIN:橫向結合 (合併多個資料表的各欄位)UNION:垂直結合 (合併多個資料表中的紀錄)
語法
1
2
3
select column1, column2 from table1
union
select column4, column4 from table2
Union All 聯集
有重複列Row
垂直合併兩資料表(有重複資料)
將2個資料表的紀錄垂直結合在一起,會保留原始結果(不會過濾重複的資料,有重複的資料)。
語法
1
2
3
select column1, column2 from table1
union all
select column4, column4 from table2
Except 差集
只取「第一個select」但不存在「第二個select」的資料。
將 table1 的資料減去 table2的資料 (相當於是減法運算的概念)
語法
1
2
3
select column1, column2 from table1
except
select column4, column4 from table2
Intersect 交集
將兩資料表相同的資料取出來,且有重複的資料只會顯示其中一筆 (無重複的資料)。
找出 table1 和 table2 相同的資料
語法
1
2
3
select column1, column2 from table1
intersect
select column4, column4 from table2
