【轉】Mysql聯集查詢union和union all的使用介紹

來源:互聯網
上載者:User

標籤:style   意義   src   jpg   sql union   order   from   class   操作   

Mysql的聯集查詢命令UNION和UNION ALL,總結了使用文法和注意事項,以及學習例子和項目例子,需要的朋友可以參考下 一、UNION和UNION ALL的作用和文法 UNION 用於合......


Mysql的聯集查詢命令UNION和UNION ALL,總結了使用文法和注意事項,以及學習例子和項目例子,需要的朋友可以參考下
一、UNION和UNION ALL的作用和文法
UNION 用於合并兩個或多個 SELECT 語句的結果集,並消去表中任何重複行。
UNION 內部的 SELECT 語句必須擁有相同數量的列,列也必須擁有相似的資料類型。
同時,每條 SELECT 語句中的列的順序必須相同.
SQL UNION 文法:
sql指令碼代碼如下:
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2
注釋:預設地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。
當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重複行
SQL UNION ALL 文法
sql指令碼代碼如下:
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2
注釋:另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。
注意:1、UNION 結果集中的列名總是等於第一個 SELECT 語句中的列名
2、UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料類型。同時,每條 SELECT 語句中的列的順序必須相同
二、union的用法及注意事項
union:聯合的意思,即把兩次或多次查詢結果合并起來。
要求:兩次查詢的列數必須一致
推薦:列的類型可以不一樣,但推薦查詢的每一列,想對應的類型以一樣
可以來自多張表的資料:多次sql語句取出的列名可以不一致,此時以第一個sql語句的列名為準。
如果不同的語句中取出的行,有完全相同(這裡表示的是每個列的值都相同),那麼union會將相同的行合并,最終只保留一行。也可以這樣理解,union會去掉重複的行。
如果不想去掉重複的行,可以使用union all。
如果子句中有order by,limit,需用括弧()包起來。推薦放到所有子句之後,即對最終合并的結果來排序或篩選。
如:
sql指令碼代碼如下:
(select * from a order by id) union (select * from b order id);
在子句中,order by 需要配合limit使用才有意義。如果不配合limit使用,會被文法分析器最佳化分析時去除。
三、學習例子
下面的例子中使用的原始表:
Employees_China:
sql指令碼代碼如下:
E_ID E_Name
01 Zhang, Hua
02 Wang, Wei
03 Carter, Thomas
04 Yang, Ming
Employees_USA:
sql指令碼代碼如下:
E_ID E_Name
01 Adams, John
02 Bush, George
03 Carter, Thomas
04 Gates, Bill
使用 UNION 命令執行個體
列出所有在中國和美國的不同的僱員名:
sql指令碼代碼如下:
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
結果:
sql指令碼代碼如下:
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill
注釋:這個命令無法列出在中國和美國的所有僱員。在上面的例子中,我們有兩個名字相同的僱員,他們當中只有一個人被列出來了。UNION 命令只會選取不同的值。
使用 UNION ALL 命令執行個體
UNION ALL 命令和 UNION 命令幾乎是等效的,不過 UNION ALL 命令會列出所有的值。
sql指令碼代碼如下:
SQL Statement 1
UNION ALL
SQL Statement 2
執行個體:
列出在中國和美國的所有的僱員:
sql指令碼代碼如下:
SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA
結果
sql指令碼代碼如下:
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill

文檔來源:http://www.itxm.net/a/shujuku/2016/1205/841.html

【轉】Mysql聯集查詢union和union all的使用介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.