MySQL交集和差集的實現方法

MySQL交集和差集的實現方法

在MySQL中,只支持Union(並集)集合運算,而對於交集Intersect和差集Except並不支持。那麼如何才能在MySQL中實現交集和差集呢?

一般在MySQL中,我們可以通過in和not in來間接實現交集和差集,當然也有一定侷限性,面對少量數據還可以,但數據量大了效率就會變得很低。

創建table1

創建table2

插入

使用not in 求差集,但效率低

求交集,此時只有id name age 所有都一樣才是符合要求的。

union all和union的區別

UNION和UNION ALL的功能都是將兩個結果集合併為一個,但是這兩個關鍵字不管從使用還是效率上來說,都是有一定區別的。

使用上:

1、對重複結果的處理:UNION在進行錶鏈接後會篩選掉重複的記錄,而Union All則不會去除重複記錄。

2、對排序的處理:Union將會按照字段的順序進行排序;UNION ALL只是將兩個結果合併後就返回,並不會進行排序處理。

效率上:

從效率上說,UNION ALL的處理效率要比UNION高很多,所以,如果可以確認合併的兩個結果集中,且不包含重複數據和不需要進行排序的話,推薦使用UNION ALL。


分享到:


相關文章: