在mysql中,union all的用法是“select語句1 union all select語句2…”,union all能夠把來自多個select語句的結果組合到一個結果集中,并把所有的記錄返回,這樣的效率會高于union。
本教程操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
union all在mysql中的用法是什么
1.mysql? ?union? 語法
mysql? ?union 用于把來自多個select? 語句的結果組合到一個結果集合中。語法為:
select??column,......from?table1 union?[all] select??column,......?from?table2 ...
在多個select? 語句中,對應的列應該具有相同的字段屬性,且第一個select 語句中被使用的字段名稱也被用于結果的字段名稱。
1.1 union? 與 union all 的區別
當使用union? 時,mysql 會把結果集中重復的記錄刪掉,而使用union? all ,mysql 會把所有的記錄返回,且效率高于union 。
2. mysql union? 用法示例
union 常用與數據類似的兩張或多張表查詢,如不同的數據分類表,或者是數據歷史表等,下面是用于測試的兩張表;
2.1使用 UNION 查詢
查詢兩張表中的文章 id 號及標題,并去掉重復記錄:
SELECT?aid,title?FROM?article?UNION?SELECT?bid,title?FROM?blog
返回查詢結果如下:
2.2.UNION 查詢結果說明
重復記錄是指查詢中各個字段完全重復的記錄,如上例,若 title 一樣但 id 號不一樣算作不同記錄。
第一個 SELECT 語句中被使用的字段名稱也被用于結果的字段名稱,如上例的 aid。
各 SELECT 語句字段名稱可以不同,但字段屬性必須一致。
3.使用 UNION ALL 查詢
查詢兩張表中的文章 id 號及標題,并返回所有記錄:
SELECT?aid,title?FROM?article?UNION?ALL?SELECT?bid,title?FROM?blog
返回查詢結果如下:
顯然,使用 UNION ALL 的時候,只是單純的把各個查詢組合到一起而不會去判斷數據是否重復。因此,當確定查詢結果中不會有重復數據或者不需要去掉重復數據的時候,應當使用 UNION ALL 以提高查詢效率。
推薦學習:mysql視頻教程