sql中union和union all的用法

2021-10-12 20:05:51 字數 1585 閱讀 1268

如果我們需要將兩個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:對兩個結果集進行並集操作,包括重複行,不進行排序; 如果返回的兩個結果集中有重複的資料,那麼返回的結果集就會包含重複的資料了。linux就該這麼學

sql中union和union all用法

如果我們需要將兩個select語句的結果作為乙個整體顯示出來,我們就需要用到union或者union all關鍵字。union 或稱為聯合 的作用是將多個結果合併在一起顯示出來。union和union all的區別是,union會自動壓縮多個結果集合中的重複結果,而union all則將所有的結果全...

SQL中Union和Union All的用法

union 操作符 union 操作符用於合併兩個或多個 select 語句的結果集,請注意,union 內部的 select 語句必須擁有 相同數量的列,列也必須擁有 相似的資料型別,同時,每條 select 語句中的列的 順序必須相同。union跟 join 有些許類似,因為這兩個指令都可以由多...

SQL中UNION和UNION ALL的詳細用法

在開發中,有些資料的儲存可能涉及到分庫分表,查詢的時候,可能需要查詢所有的分表,這個時候,就需要用到union或者union all,下面介紹一下union的用法以及與union all的區別 union操作符用於合併兩個或多個select語句的結果集,這裡需要注意的是 union內部的select...