《MYSQL中 UNION 和 UNION ALL 操作符小結(jié)MYSQL教程》要點:
本文介紹了MYSQL中 UNION 和 UNION ALL 操作符小結(jié)MYSQL教程,希望對您有用。如果有疑問,可以聯(lián)系我們。
導(dǎo)讀:1、UNION 和 UNION ALL 操作符用于合并兩個或多個 SELECT 語句的結(jié)果集【適用場景】
SQL中 UNION 和 UNION ALL 操作符小結(jié)
1、UNION 和 UNION ALL 操作符用于合并兩個或多個 SELECT 語句的結(jié)果集【適用場景】
2、UNION 和 UNION ALL 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列.列也必須擁有相似的數(shù)據(jù)類型,即數(shù)據(jù)類型必須兼容.同時,每條 SELECT 語句中的列的順序必須相同.
3、UNION 和 UNION ALL 結(jié)果集中的列名總是等于 UNION(ALL)中第一個 SELECT 語句中的列名
4、UNION 和 UNION ALL 這兩者從使用和效率上來說都有所不同.如果可以確認(rèn)合并的兩個結(jié)果集中不包含重復(fù)的數(shù)據(jù)的話,那么就使用union all
?? 1)對重復(fù)結(jié)果的處理:UNION在進(jìn)行表鏈接后會篩選掉重復(fù)的記錄,Union All不會去除重復(fù)記錄
?? 2)對排序的處理:Union將會按照字段的順序進(jìn)行排序;UNION ALL只是簡單的將兩個結(jié)果合并后就返回
?? 3)從效率上說: UNION ALL 要比 UNION 快很多
5、UNION 其實執(zhí)行的實質(zhì)邏輯應(yīng)該是先將某一子結(jié)果集進(jìn)行排序,然后再判斷是否有重復(fù)的數(shù)據(jù),若有則刪除掉重復(fù)的數(shù)據(jù)
簡單總結(jié): UNION 對兩個結(jié)果集進(jìn)行并集操作,不包括重復(fù)行去重,同時進(jìn)行默認(rèn)規(guī)則的排序
????????? UNION ALL 對兩個結(jié)果集進(jìn)行并集操作,包括重復(fù)行,不進(jìn)行排序;
?????????
????????? 由于Union需要對查詢結(jié)果集進(jìn)行排序操作,當(dāng)數(shù)據(jù)量較大時,若非特殊需要,盡量不要使用Union操作,而改用Union All操作,
????????? 然后對Union All出來的結(jié)果執(zhí)行去重操作即可,這樣會使得查詢的效率大大的增強(qiáng)
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/5592.html