MySQL实现差集(Minus)和交集(Intersect)

来源:互联网 发布:手机测试温度软件 编辑:程序博客网 时间:2024/06/05 08:09
MySQL没有实现Minus和Intersect功能,就像它也没有实现cube的功能一样。

可以用SQL实现同样的功能,就是麻烦了点。
  1. drop table t1;
  2. drop table t2;
  3. create table t1(id int primary key,nickname varchar(20),playNum varchar(20));
  4. create table t2(id int primary key,nickname varchar(20),playNum varchar(20));
  5. insert into t1 values(1,1,10);
  6. insert into t1 values(2,2,20);
  7. insert into t1 values(3,3,30);
  8. insert into t2 values(1,1,10);
  9. insert into t2 values(2,2,200);
  10. insert into t2 values(3,33,300);
  11. commit;


MySQL实现交集
  1. SELECT id, nickname, playNum, COUNT(*)
  2. FROM (SELECT id, nickname, playNum
  3.     FROM t1
  4.     UNION ALL
  5.     SELECT id, nickname, playNum
  6.     FROM t2
  7.     ) a
  8. GROUP BY id, nickname, playNum
  9. HAVING COUNT(*) > 1


MySQL实现差集
  1. SELECT t1.id, t1.nickname, t1.playNum
  2. FROM t1 LEFT JOIN t2 ON t1.id = t2.id
  3. WHERE t1.nickname != t2.nickname
  4.     OR t1.playNum != t2.playNum;
0 0
原创粉丝点击