[iT鐵人賽Day17]SQL語法-集合運算Union 、Intersect 、Except
文章推薦指數: 80 %
集合運算查詢. 在資料庫執行多個資料表查詢時,除了使用Join的合併查詢外,也可以使用集合運算:聯集Union、交集Intersect、差集Except來執行兩個資料表的合併。
第11屆iThome鐵人賽
DAY
17
2
ModernWeb
淺談資料庫&ASP.net&C#入門系列第
17篇
[iT鐵人賽Day17]SQL語法-集合運算Union、Intersect、Except
11th鐵人賽
sqlserver
sql
資料庫
高雄火箭隊的前後端小夥伴們
捲毛蔡
團隊火箭隊
2019-09-1811:23:0912517瀏覽
集合運算查詢
在資料庫執行多個資料表查詢時,除了使用Join的合併查詢外,也可以使用集合運算:聯集Union、交集Intersect、差集Except來執行兩個資料表的合併。
下面會用這兩個資料表來當作集合範例
student資料表:
Teacher資料表:
其中兩個資料表中,有些人分別是學生又同時是老師(Mike和新西亞)。
集合運算查詢分為三種:
1.聯集UNION:
將2個資料表的紀錄垂直結合再一起,有重複的資料只會顯示其中一筆,UNION與JOIN不同的地方在於,JOIN是作橫向結合(合併多個資料表的各欄位);而UNION則是作垂直結合(合併多個資料表中的紀錄)。
SQL範例:
現在要將[student]與[Teacher]兩個資料表使用聯集運算取出全部學生及老師的名字,SQL如下:
select學生as姓名fromstudent
union
select老師fromTeacher
全部學生及老師都有被顯示出來,不過在[student]與[Teacher]裡都有的新西亞以及Mike學生和老師,在查詢結果中只會出現一筆,而不會重複出現相同的姓名。
而UNION查詢的資料集欄位名稱,通常會依據第一個Select所查詢的欄位來當名稱,不過上述SQL語法使用as姓名來代替欄位名稱學生了。
結果如下圖:
Unionall
unionall與union的差異在於,union會將重複的自動踢掉,而unionall將會保留重複的。
也就是說假如想要新西亞和Mike在[student]與[Teacher]的兩個資料庫內的資料都要出現,那就需要使用Unionall,顯示結果就會重複出現新西亞與Mike。
如下圖所示:
select學生as姓名fromstudent
unionall
select老師fromTeacher
2.交集INTERSECT:
將兩個資料表相同的紀錄取出來,且有重複的資料只會顯示其中一筆。
SQL範例:
現在要將[student]與[Teacher]兩個資料表使用交集運算取出兩個資料表是老師又同時是學生的姓名,SQL如下:
select學生as姓名fromstudent
intersect
select老師fromTeacher
結果顯示兩個資料表都有的相同姓名的Mike及新西亞,且也都各只顯示一筆。
結果如下圖:
3.差集EXCEPT:
只取出第一個select指令但是不存在第二個select指令的紀錄。
SQL範例
現在將[student]與[Teacher]兩個資料表使用差集運算取出student資料表的學生姓名,但不能同時也是老師的學生姓名(只取出純學生,不包含同時也是老師的學生XD),有點像leftjoin。
SQL如下:
select學生as姓名fromstudent
except
select老師fromTeacher
顯示結果只出現student的學生姓名,不過顯示結果的姓名不會有在Teacher資料表內的姓名,所以在兩個資料表都有的Mike和新西亞就不會出現(Bye~)。
結果如下圖:
另外差集EXCEPT及只適用於SQLServer,在Oracle的交集則是使用MINUS,使用方法與EXCEP一樣;而MySQL不支援EXCEPT及MINUS,則要使用leftjoin。
詳細介紹可以看這個網頁。
留言
追蹤
檢舉
上一篇
[iT鐵人賽Day16]SQL語法-表與表之間的關係Join也可使用小精靈產生Join
下一篇
[iT鐵人賽Day18]SQL語法-排序Orderby
系列文
淺談資料庫&ASP.net&C#入門
共36篇
目錄
RSS系列文
訂閱系列文
103人訂閱
32
[iT鐵人賽Day32]請出示驗證票(Ticket),才能入場買餅乾(Cookie)吃唷!(FormsAuthentication授權驗證會員登入)
33
[iT鐵人賽Day33]SQLServer暫存表(@###)與CTE(CommonTableExpressions)
34
[iT鐵人賽Day34]SQLServer實用的排序函數ROW_NUMBER()
35
[iT鐵人賽Day35]ASP.NET-使用者控制項-分頁的用法
36
[iT鐵人賽Day36]SQLServer找出最新日期的所有資料
完整目錄
尚未有邦友留言
立即登入留言
iT邦幫忙鐵人賽
參賽組數
1087組
團體組數
52組
累計文章數
20477篇
完賽人數
572人
鐵人賽最新文章
.NetCoreWebApi_筆記21_Swagger及OpenAPI介紹與配置使用方式_API管理與測試探討
.NetCoreWebApi_筆記20_api結合ADO.NET資料庫操作part8_新聞文章查詢
.NetCoreWebApi_筆記19_api結合ADO.NET資料庫操作part7_新聞文章的編輯更新與刪除
.NetCoreWebApi_筆記18_api結合ADO.NET資料庫操作part6_新聞文章表格陳列查詢
.NetCoreWebApi_筆記17_api結合ADO.NET資料庫操作part5_新聞文章新增_新聞類別元素透過API綁定方式
[Bonus系列]-使用useCallback&useMemo的正確時機是什麼?
大盤到底能不能攻上一萬八??
gotodie?那個goto到底能不能用啊?
2021/12/12更新
予焦啦!一夢終須醒......
前往鐵人賽
技術推廣專區
[Day2]抓取每日收盤價
[Day1]基本工具安裝
利用python取得永豐銀行API的Nonce
[Day03]tinyML開發板介紹
永豐金融API測試員
[Day01]在享受tinyML這道美食之前
[Day3]使用ta-lib製作指標
[Day4]函數打包與買進持有報酬率試算
計算API所需要的參數:HashID
計算API所需要的參數:IV
前往鐵人賽
熱門問題
公司想要架設一個網購物站,但是不知道要怎麼規劃預算
正要準備開始上CCNA…
無網際網路時,請問兩台電腦如何‘無線’遠端連線
遠端監控電腦效能
如何設定一台電腦,有線網卡走公司內網,無線網卡走外網,同時運行?
關於網頁顯示問題
mssql資料庫搬移時,怎樣出所有需要的資料會比較好?
請問有在做關貿資料串接的資訊公司嗎?
NAS、雲端儲存空間、隨身硬碟差別在那?怎麼選?
照片辨識比對軟體開發
IT邦幫忙
站方公告
【2021iThome鐵人賽】登登登!究竟獎落誰家,2021iThome鐵人賽得獎名單正式揭曉
熱門tag
看更多
13th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
windows
php
python
windowsserver
linux
c#
程式設計
資訊安全
css
vue.js
sql
分享
熱門回答
正要準備開始上CCNA…
遠端監控電腦效能
如何設定一台電腦,有線網卡走公司內網,無線網卡走外網,同時運行?
NAS、雲端儲存空間、隨身硬碟差別在那?怎麼選?
無網際網路時,請問兩台電腦如何‘無線’遠端連線
照片辨識比對軟體開發
關於網頁顯示問題
公司想要架設一個網購物站,但是不知道要怎麼規劃預算
mssql資料庫搬移時,怎樣出所有需要的資料會比較好?
DefaultDomainPolicy密碼複雜度
熱門文章
大盤到底能不能攻上一萬八??
[Bonus系列]-使用useCallback&useMemo的正確時機是什麼?
【教學】簡單救回電腦資料
為了轉生而點技能-JavaScript,day23(Promise介紹
12.MYSQL淺談NULL
數位簽章(digitalsignature)
D9.學習基礎C、C++語言
什麼是功能分解?
7.MYSQL表格程式語法
javascript基礎功能1
一週點數排行
更多點數排行
海綿寶寶(antijava)
㊣浩瀚星空㊣(yoching)
小山丘(a243318490)
居然解出來了(partyyaya)
ccenjor(ccenjor)
純真的人(jer5173)
fillano(fillano)
Gary(mosbbs)
PPTaiwan(Pochengtaiwan)
souda(souda)
×
At
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{result.label}}
{{result.account}}
關閉
延伸文章資訊
- 1201512171544[SQL] 交集、聯集、差集 - 隨意窩
轉自 http://penguin1989930.pixnet.net/blog/post/233659216 -- Mark 筆記有時間再補範例。交集用法: INTERSECT從兩個資料表取出...
- 2差集- 維基百科,自由的百科全書
在集合論和數學的其他分支中,存在差集的兩種定義:相對差集(差集)和絕對差集(補集)。 ... 下列命題給出一些差集同聯集和交集等集合論運算相關的一些常用性質。
- 3[iT鐵人賽Day17]SQL語法-集合運算Union 、Intersect 、Except
集合運算查詢. 在資料庫執行多個資料表查詢時,除了使用Join的合併查詢外,也可以使用集合運算:聯集Union、交集Intersect、差集Except來執行兩個資料表的合併。
- 4集合
繼之,將說明某些特殊集合,例如;宇集、空集、補集、差 ... 元素全部混在一起)所成的集合,稱為A與B 的聯集,以符號A B ... 聯集與交集的元素個數關係.
- 5[运算符][集合運算] (交集、差集、聯集、互斥) - 新浪博客
在集合論和數學的其他分支中,存在差集(台灣叫做差集、中國大陸叫做补集)的兩種定義:相對差集和絕對差集。 差集可以看作兩個集合相減,有時也稱作差集 ...