Union是用來取得多個select語法之和的集合運算子(聯集)。Union會將重複的列(Row)刪除。
透過Union集合運算,可以把不同資料表的結合體拿來做邏輯運算。
語法
- 只要將
union寫在select與select語法之間即可 - 兩個
select語法的格式與欄位數量(column)必須相等 - 如果欄位數量(column)不相等,就要放入
null使其相等
1
2
3
4
select a, b, c from table1 --兩個select語法的格式與欄位數量(column)必須相等
union --只要將union寫在select與select語法之間即可
select c, d, null from table2 --如果欄位數量(column)不相等,就要放入null使其相等
order by 1 --當各select語法中的欄位名有所不同時,就要在 order by中指定「欄位編號」
- 要以
order by來排序union的結果,就要寫在最後的select語法的後面。 - 當各
select語法中的欄位名有所不同時,就要在order by語法中指定「欄位編號」。
範例一
同時取得負責人清單的負責人ID、姓名、以及分店負責人的分店負責人ID、姓名之一覽表
1
2
3
4
5
--同時取得負責人清單的負責人ID、姓名、以及分店負責人的分店負責人ID、姓名之一覽表
select [負責人ID], [負責人姓名] from [負責人清單]
union
select [分店負責人ID], [分店負責人姓名] from [分店負責人清單]
order by 1 -- 按第一個欄位column排序
order by 1:數字1表示按select的第一個欄位排序。
order by 1,2,3:ORDER BY後面的數字1,2,3 分別代表select後面的第1、第2、第3個欄位。
執行結果
1
2
3
4
5
6
7
8
9
10
11
12
13
負責人ID 負責人姓名
1 鈴木
2 小野
3 齋藤
4 藤本
5 小林
6 伊藤
7 佐瀨
8 宇賀神
9 岡田
10 田中
11 井上
12 佐佐木
範例二
同時取得負責人清單、分店負責人清單、顧客清單的ID、姓名、姓名拼音
1
2
3
4
5
6
7
--同時取得負責人清單、分店負責人清單、顧客清單的ID、姓名、姓名拼音
select [負責人ID] "ID", [負責人姓名] "姓名",[姓名拼音] from [負責人清單]
union
select [分店負責人ID],[分店負責人姓名], [姓名拼音] from [分店負責人清單]
union
select [顧客ID], [顧客名稱], null from [顧客清單] --欄位數不同(沒有的欄位column),加上 null使其相等
order by 2 --按第二個欄位column排序(姓名排序)
執行結果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ID 姓名 姓名拼音
5 Lanru NULL
4 MicroHard NULL
1 Waikiki軟體 NULL
5 小林 KOBAYASHI
2 小野 ONO
11 井上 INOUE
10 田中 TANAKA
6 伊藤 ITO
8 宇賀神 UGAJIN
12 佐佐木 SASAKI
7 佐瀨 SASE
9 岡田 OKADA
1 鈴木 SUZUKI
2 鈴木商事 NULL
3 齋藤 SAITO
3 齋藤模型店 NULL
4 藤本 FUJIMOTO