union 是對數據進行並集操作,不包括重復行,同時進行默認排序
Union all 是對數據進行並集操作,包括重復行,不進行排序
舉例說明:
創建數據庫表:
復制此表:
加入數據:
MySQL中的UNION
查詢結果:
我們從上面的查詢數據可以發現:
UNION在進行表鏈接后會篩選掉重復的記錄,對所產生的結果集進行排序運算,刪除重復的記錄再返回結果。
MySQL中的UNION ALL
查詢結果:
從上面數據我們可以看到:
UNION ALL只是簡單的將兩個結果合並后就返回。如果返回的兩個結果集中有重復的數據,那么返回的結果集就會包含重復的數據了。
效率:
從效率上說,UNION ALL 要比UNION快很多,所以,如果可以確認合並的兩個結果集中不包含重復數據且不需要排序時的話,那么就使用UNION ALL。