UNION 用於合併兩個或多個 SELECT 語句的結果集,並消去表中任何重複行。
UNION 內部的 SELECT 語句必須擁有相同數量的列,列也必須擁有類似的數據類型。
同時,每條 SELECT 語句中的列的順序必須相同.sql
SQL UNION 語法:
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2優化
當 ALL 隨 UNION 一塊兒使用時(即 UNION ALL),不消除重複行
SQL UNION ALL 語法:
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2排序
注意:
一、UNION 結果集中的列名老是等於第一個 SELECT 語句中的列名
二、UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有類似的數據類型。
同時,每條 SELECT 語句中的列的順序必須相同it
union:聯合的意思,即把兩次或屢次查詢結果合併起來。
要求:兩次查詢的列數必須一致
推薦:列的類型能夠不同,但推薦查詢的每一列,想對應的類型同樣
能夠來自多張表的數據:屢次sql語句取出的列名能夠不一致,此時以第一個sql語句的列名爲準。
若是不一樣的語句中取出的行,有徹底相同(這裏表示的是每一個列的值都相同),那麼union會將相同的行合併,最終只保留一行。
也能夠這樣理解,union會去掉重複的行。
若是不想去掉重複的行,能夠使用union all。
若是子句中有order by,limit,需用括號()包起來。推薦放到全部子句以後,即對最終合併的結果來排序或篩選。io
如:
(select * from a order by id) union (select * from b order id);
在子句中,order by 須要配合limit使用纔有意義。若是不配合limit使用,會被語法分析器優化分析時去除。table