mysql获取两个集合的交集和差集

mysql中获取两个集合的交集,我的方法如下:

1.两个集合的结构要一致,对应的字段数,字段类型

2.将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集

3.将上面的所有集 GROUP BY id

4.最后 HAVING COUNT(id)=1,等于1的意思是只出现了一次,所以这个是差集,如果等于2,那么就是交集

这是实现的基本原理,具体如下:

 1 -- 下面的sql有明显的问题,不过这个只是一个示意,从一个表中查询不需要用到交集和差集,条件可以合并在一起直接查询出来的.能明白意思就好
 2 -- 下面的sql的意思是找到所有非技术部的员工的id,code和name
 3 SELECT a.* FROM(
 4     SELECT id,code,name FROM test_emp
 5     UNION ALL
 6     SELECT id,code,name FROM test_emp WHERE dept=‘JSB‘
 7 )a GROUP BY a.id HAVING COUNT(a.id)=1
 8
 9 -- 下面的sql的意思是找到所有技术部年龄大于25的员工
10 SELECT a.* FROM(
11     SELECT id,code,name FROM test_emp WHERE age>25
12     UNION ALL
13     SELECT id,code,name FROM test_emp WHERE dept=‘JSB‘
14 )a GROUP BY a.id HAVING COUNT(a.id)=2
时间: 2024-10-14 15:26:27

mysql获取两个集合的交集和差集的相关文章

C# 取两个集合的交集\并集\差集

交集:Intersect 并集:Union 差集:Except var A= new List() { 1, 2, 3, 4, 5, 6 }; var B= new List() { 3, 4, 5, 6,7,8,9 }; var C= A.Intersect(B); //交集 { 3, 4, 5, 6 } var D= A.Union(B); //并集 { 1, 2, 3, 4, 5, 6,7,8,9 } var E= A.Except(B); //差集 { 1, 2 } var F= B.E

计算两个集合的交集数字(java)

循环判断2个数组 将相同的公共元素复制到新数组中即可 1 2 3 import java.util.Arrays; 4 5 public class count_same_number { 6 7 public static int[] join(int[] a,int[] b) 8 { 9 int count=0; 10 int new_target[]=new int[Math.max(a.length, b.length)];//新数组 11 int index=0; 12 for(int

求两个集合的交集和并集C#

我是用hashset<T>来实现的 具体如代码所示 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace JiaoJi { class Program { static void Main(string[] args) { int [] arrA=new int[8]{1,2,3,4,5,6,7,8}; int [] arrB=new int[5]{4,5,

C# Linq获取两个List或数组的差集交集

List<int> list1 = new List<int>(); list1.Add(1); list1.Add(2); list1.Add(3); List<int> list2 = new List<int>(); list2.Add(3); list2.Add(4); list2.Add(5); //得到的结果是4,5 即减去了相同的元素. List<int> list3 = list2.Except(list1).ToList();

C# 获取两个DataTable 的交集、并集、差集

//IEnumerable<DataRow> QOld = vDTOld.AsEnumerable().ToList();                ////比较两个数据源的交集                //IEnumerable<DataRow> QJJ = vDTOld.AsEnumerable().Intersect(DTNew.AsEnumerable(), DataRowComparer.Default);                ////两个数据源的交集

Java里面如何求两个集合的交集

在Python里,或许我们没有这个烦恼,因为python里已经为我们提供了intersection这样的方法. 但是在Java里,就需要我们动一番脑筋了.这里浓重推荐下apache的CollectionUtils工具类. 方法签名如下所示: org.apache.commons.collections.intersection(final Collection a, final Collection b) 那么这个方法是怎么实现的呢?这里以list为例 public class TestInte

JS - 计算两个数组的交集、差集、并集、补集(多种实现方式)

方法一:最普遍的做法 使用 ES5 语法来实现虽然会麻烦些,但兼容性最好,不用考虑浏览器 JavaScript 版本.也不用引入其他第三方库. 1,直接使用 filter.concat 来计算 var a = [1,2,3,4,5] var b = [2,4,6,8,10] //交集 var c = a.filter(function(v){ return b.indexOf(v) > -1 }) //差集 var d = a.filter(function(v){ return b.index

AutoCAD.Net/C#.Net QQ群:193522571 LinQ 两个集合求交集、并集

//取得交集 Pn = PnFace.Intersect(PnType).ToList(); //取得并集 Pn = PnFace.Concat(PnType).ToList();

Python获取两个文件的交集、并集、差集

题记:朋友在处理数据时,需要解决这方面的问题,所以利用她给的代码,自己重新梳理了下,并成功运行. 代码如下: # coding:utf-8 s1 = set(open(r'C:\\Users\\yangwj\\Desktop\\2\\1.txt').readlines()) s2 = set(open(r'C:\\Users\\yangwj\\Desktop\\2\\2.txt').readlines()) ff = open('C:\\Users\\yangwj\\Desktop\\2\\12