一、 交集 Join   

1、inner join 其处理结果与等值/自然连接相同

mssql :

-- mssql 中 inner join   连接需要 on Connection条件 否则会报错, mysql 不会,其结果等于cross join
select * from Major m  inner JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
mysql:
-- 其结果等于 crose join
select * from Major m inner join  Department d ;
-- 等值连接
select m.*,d.* from Major m inner  join   Department d on m.dptId = d.dptId; 

2、 left join /left outer join 左连接/左外连接

注:在sql 中, left join 为 left outer join 的缩写

mssql:

select * from Major m   left  outer  JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo 

mysql:

select * from Major m   left    join `department` d on m.dptId = d.dptId; 

3、 right join/right outer join 右连接/右外连接

mssql:

select * from Major m   right  outer  JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo 

mysql:

select * from Major m   right outer    join `department` d on m.dptId = d.dptId; 

4、full join 全连接

mssql:

--a
select * from Major m  FULL OUTER JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
--b
select * from Major m   left  outer  JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
union
select * from Major m   right  outer  JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
--c
select * from Major m   left  outer  JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
union all
select * from Major m   right  outer  JOIN
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
where m.DepNoOrSubjectNo is null 

mysql:    
注:mysql 5.0版本还不支持 full join ,但可以采用 join + union方法实现,详细可以参考:    
http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/

--全连接 == 一个左连接 + 一个右连接 + union(去掉相同行)
--a
select * from Major m  left outer join `department` d on m.dptId = d.dptId
union
select * from Major m  right outer join `department` d on m.dptId = d.dptId
--b
select * from Major m  left outer join `department` d on m.dptId = d.dptId
union  all
select * from Major m  right outer join `department` d on m.dptId = d.dptId
where m.dptId is null
--大力提倡使用b,尤其是在处理很大的记录集时, union all 不会进行排序及消除相同的行(消除相同的行可能通过第二个join的条件进行实现),所以可以节省不少时间. 

二、差集 (not in)    

select * from Major m where m.dptId not in(select dptId from department ) 

差集中, mysql 与 mssql 语句可以直接采用 not in 来实现

三.、并集 union

mssql:

-- union  并, 默认取消相同 行
select * from Major m
union
select * from Major tm
-- union full 会有重复记录
select * from Major m
union all
select * from Major tm

mysql:

-- union 默认会取消重复选项
select * from Major `major`
union  select * from Major mj ;
-- union all 不会取消重复选项
select * from Major m
union  all
select * from Major tm 

四、 笛卡尔积    

mssql:

-- 笛卡尔积
select * from Major cross  join
dbo.DepNmOrSubjectNm 

mysql:

-- 笛卡尔集
select * from Major m cross join `department` d; 

带条件的笛卡尔积与等值连接功能相同

转载于:https://www.cnblogs.com/szytwo/archive/2012/09/21/2697454.html

SQL 交集 差集 并集 笛卡尔积 应用实例相关推荐

  1. Spark交集/差集/并集/拉链

    Test 1: package test.wyh.wordcountimport org.apache.spark.{SparkConf, SparkContext}object TestOperat ...

  2. oracle交集差集并集,SQL求 交集 并集 差集

    线程笔记:Future模式 线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一 ...

  3. 【mysql】mysql获取两个集合的交集/差集/并集

    mysql的常见场景,获取两个数据集的交集和差集 步骤 两个集合的结构要一致,对应的字段数,字段类型 将两个集合用 UNION ALL 关键字合并,这里的结果是有重复的所有集 将上面的所有集 GROU ...

  4. javascript 数组求交集/差集/并集/过滤重复

    最近在小一个小程序项目,突然发现 javscript 对数组支持不是很好,连这些基本的功能,都还要自己封装.网上查了下,再结合自己的想法,封装了一下,代码如下. //数组交集 Array.protot ...

  5. java8 stream流操作集合交集,差集,并集,过滤,分组,去重,排序,聚合等

    测试对象 public class Person {private String name;private Integer age;private Integer weight;public Pers ...

  6. list的交集,差集,并集

    需求 list的方法 说明 备注 交集 listA.retainAll(listB) listA内容变为listA和listB都存在的对象 listB不变 差集 listA.removeAll(lis ...

  7. 交集♂差集♂并集♂和其他集合的内置方法

    p_s = {'ybl','wb','lzg'} l_s = {'bbw',''wb'} 求交集♂(共同)的话 print(p_s.intersection(l_s)) #还有一个更简单的方法 pri ...

  8. mysql利用join查询 交集 差集 并集

  9. linux求数组的交集,shell/bash 交集、并集、差集

    方法一(直接用文件名):取两个文本文件的并集.交集.差集 并: sort -m 交: sort -m 差 file1 - file2: sort -m 方法二(用变量参数):取两个文本文件的并集.交集 ...

最新文章

  1. Redis进阶-5.x 单节点 及Redis Cluster 3主3从集群部署
  2. 理解Java里面的必检异常和非必检异常
  3. android--------Popupwindow的使用
  4. Java工作笔记-Spring Boot上传图片并显示
  5. three.js之正投影摄像机与透视投影摄像机的区别
  6. 计算机二级换c语言,09年计算机二级C语言辅导:C技巧(内存分配:更换策略,不要为难内存)...
  7. (转)从Fintech到Techfin,未来十年有九大重要挑战
  8. RSA加密解密及RSA加签验签
  9. .NET单元测试(四):用例设计
  10. C语言负数的小数次方,c语言 10 负次方
  11. zip 命令实现批量文件压缩
  12. 田洪川(天轰穿)老师谈.NET学习:将励志和教学结合起来
  13. 追剪电子凸轮算法(图)
  14. java获取一天的开始时间和结束时间
  15. 苹果CMSV10本地DPLAYER播放器自动下一集设置教程
  16. C++中定义别名的几种方式总结
  17. 利用EXCEL自动生成20以内加减法
  18. Zookeeper Paxos算法 一致性协议
  19. python删除系统指定文件
  20. 巧用Excel VBA进行考试成绩登分录入

热门文章

  1. 关于__defineGetter__ 和__defineSetter__的说明
  2. 常用单词缩写(不断更新)
  3. 浅析Android中的消息机制
  4. VS2012设置断点的方法
  5. 添加一个文件夹及一些文件如何使用git生成patch
  6. Java线程同步机制synchronized关键字的理解
  7. client-go删除job同时删除job关联的pod
  8. linux I/O--I/O多路复用--详解(四)
  9. 【死磕Sharding-jdbc】—–最大努力型事务
  10. centos7中使用yum安装tomcat mysql 等