獲取兩個資料的交集 MySQL交集和差集的實現方法

2021-10-14 16:52:24 字數 630 閱讀 7389

在mysql中,只支援union(並集)集合運算,而對於交集intersect和差集except並不支援。那麼如何才能在mysql中實現交集和差集呢?

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

建立table1

建立table2

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

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

union all和union的區別

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

使用上:

2、對排序的處理:union將會按照欄位的順序進行排序;union all只是將兩個結果合併後就返回,並不會進行排序處理。

效率上:

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

兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2,2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 4,9 說明 輸出結果中每個元素出現的次數,應與元素在兩個陣列 現的次數一致。我們可以不考慮輸出結果...

兩個陣列的交集

題目 給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 首先說一下我自己的 菜雞 思路 我先是想先去重第第乙個陣列 nums1 然後迴圈判斷...

兩個陣列的交集

給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結果中的每個元素一定是唯一的。我們可以不考慮輸出結果的順序。排序 雙指標 set cl...