Home [SQL] 集合運算子 Union 聯集 (沒有重複列Row)
Post
Cancel

[SQL] 集合運算子 Union 聯集 (沒有重複列Row)

Union是用來取得多個select語法之和的集合運算子(聯集)。Union會將重複的列(Row)刪除。

透過Union集合運算,可以把不同資料表的結合體拿來做邏輯運算。

語法

  • 只要將union寫在selectselect語法之間即可
  • 兩個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,3ORDER 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

[SQL] Order By 1 什麼意思?

This post is licensed under CC BY 4.0 by the author.