获取两个数据的交集_MySQL交集和差集的实现方法
在MySQL中,只支持Union(并集)集合運(yùn)算,而對(duì)于交集Intersect和差集Except并不支持。那么如何才能在MySQL中實(shí)現(xiàn)交集和差集呢?
一般在MySQL中,我們可以通過(guò)in和not in來(lái)間接實(shí)現(xiàn)交集和差集,當(dāng)然也有一定局限性,面對(duì)少量數(shù)據(jù)還可以,但數(shù)據(jù)量大了效率就會(huì)變得很低。
創(chuàng)建table1
創(chuàng)建table2
插入
使用not in 求差集,但效率低
求交集,此時(shí)只有id name age 所有都一樣才是符合要求的。
union all和union的區(qū)別
UNION和UNION ALL的功能都是將兩個(gè)結(jié)果集合并為一個(gè),但是這兩個(gè)關(guān)鍵字不管從使用還是效率上來(lái)說(shuō),都是有一定區(qū)別的。
使用上:
1、對(duì)重復(fù)結(jié)果的處理:UNION在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,而Union All則不會(huì)去除重復(fù)記錄。
2、對(duì)排序的處理:Union將會(huì)按照字段的順序進(jìn)行排序;UNION ALL只是將兩個(gè)結(jié)果合并后就返回,并不會(huì)進(jìn)行排序處理。
效率上:
從效率上說(shuō),UNION ALL的處理效率要比UNION高很多,所以,如果可以確認(rèn)合并的兩個(gè)結(jié)果集中,且不包含重復(fù)數(shù)據(jù)和不需要進(jìn)行排序的話(huà),推薦使用UNION ALL。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的获取两个数据的交集_MySQL交集和差集的实现方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 因安全带隐患 或超30万辆本田汽车将被召
- 下一篇: mysql 精度_mysql-笔记 精度