您好,登錄后才能下訂單哦!
這篇文章給大家介紹sql中union和union all的用法是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到union或者union all關鍵字。union(或稱為聯合)的作用是將多個結果合并在一起顯示出來。
union和union all的區別是,union會自動壓縮多個結果集合中的重復結果,而union all則將所有的結果全部顯示出來,不管是不是重復。
union用法
目的:查詢出members表中group_id = 1和group_id為null的成員:
select m.member_name from members m where m.group_id = 1 union select m.member_name from members m where m.group_id is null;
結果:
分析:將上面查詢的結果和下面的查詢結果組合在了一起。會發現一個問題,“小珩”這條數據只展示了一遍,但是我們有兩個小珩呀。所以union會對查到的結果進行去重處理。
union all用法
目的:解決union遇到的問題,將所有查到的結果查詢出來:
select m.member_name from members m where m.group_id = 1 union all select m.member_name from members m where m.group_id is null;
結果:
分析:可以看到“小珩”的數據展示了兩次,即union all會將查到的結果直接全部展示出來。
總結1:join/union的感性認識&區別
join聯結的兩個表,是通過匹配兩個表中相同字段的相同的值,得到的結果集。可以認為是結果集的列拓寬了。join是使得查詢的內容更詳細了。union是取將兩個結果集的并集,但兩個結果集所擁有的列數是一樣、列的順序也一樣、字段類型相同或相似(DBMS認為的相似),才能union并展示在一起。可以認為是結果集的行數多了。union是使得查詢的結果更多了。
總結2:union/union all的感性認識&區別
union:對兩個結果集進行并集操作,不包括重復行,同時進行默認規則的排序;union在進行表鏈接后會篩選掉重復的記錄,所以在表鏈接后會對所產生的結果集進行排序運算,刪除重復的記錄再返回結果。實際大部分應用中是不會產生重復的記錄,最常見的是過程表與歷史表union。union all:對兩個結果集進行并集操作,包括重復行,不進行排序; 如果返回的兩個結果集中有重復的數據,那么返回的結果集就會包含重復的數據了。
關于sql中union和union all的用法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。