mysql union 用于把來自多個select 語句的結(jié)果組合到一個結(jié)果集合中。語法為:
select column,......from table1 union [all] select column,...... from table2 ... 在多個select 語句中,對應(yīng)的列應(yīng)該具有相同的字段屬性,且第一個select 語句中被使用的字段名稱也被用于結(jié)果的字段名稱。
1.1 union 與 union all 的區(qū)別
當(dāng)使用union 時,mysql 會把結(jié)果集中重復(fù)的記錄刪掉,而使用union all ,mysql 會把所有的記錄返回,且效率高于union 。
2. mysql union 用法示例
union 常用與數(shù)據(jù)類似的兩張或多張表查詢,如不同的數(shù)據(jù)分類表,或者是數(shù)據(jù)歷史表等,下面是用于測試的兩張表;
union all在mysql中怎么使用
2.1使用 UNION 查詢
查詢兩張表中的文章 id 號及標(biāo)題,并去掉重復(fù)記錄:
SELECT aid,title FROM article UNION SELECT bid,title FROM blog 返回查詢結(jié)果如下:
union all在mysql中怎么使用
2.2.UNION 查詢結(jié)果說明
重復(fù)記錄是指查詢中各個字段完全重復(fù)的記錄,如上例,若 title 一樣但 id 號不一樣算作不同記錄。
第一個 SELECT 語句中被使用的字段名稱也被用于結(jié)果的字段名稱,如上例的 aid。
各 SELECT 語句字段名稱可以不同,但字段屬性必須一致。
3.使用 UNION ALL 查詢
查詢兩張表中的文章 id 號及標(biāo)題,并返回所有記錄:
SELECT aid,title FROM article UNION ALL SELECT bid,title FROM blog 返回查詢結(jié)果如下:
union all在mysql中怎么使用
顯然,使用 UNION ALL 的時候,只是單純的把各個查詢組合到一起而不會去判斷數(shù)據(jù)是否重復(fù)。因此,當(dāng)確定查詢結(jié)果中不會有重復(fù)數(shù)據(jù)或者不需要去掉重復(fù)數(shù)據(jù)的時候,應(yīng)當(dāng)使用 UNION ALL 以提高查詢效率。