1 交集 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的条件进行实现),所以可以节省不少时间.
2. 差集 (not in)
sql:
select * from Major m where m.dptId not in(select dptId from department )
差集中, mysql 与 mssql 语句可以直接采用 not in 来实现
3. 并集 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
4. 笛卡尔积
mssql:
-- 笛卡尔
select * from Major cross join
dbo.DepNmOrSubjectNm
mysql:
-- 笛卡尔集
select * from Major m cross join `department` d;
带条件的笛卡尔积与等值连接功能相同.
分享到:
相关推荐
delphi Memo及tstrlists的交集差集并集
excel取两列数据交集、并集、差集 excel取两列数据交集、并集、差集 excel取两列数据交集、并集、差集
c++程序设计实现集合交集并集差集.pdf
JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集,记录一下以便查阅。JAVA获取两个数据量较大的ArrayList的交集、差集以及并集...
C++实现字符串求交集、并集、差集
c++程序设计实现集合交集并集差集.docx
Delphi 两个多边形求交集、并集、差集的源码,使用的是D5,非常古老的版本了,但能解决问题,程序使用标记法,速度非常快,解决了C语言中关于高精度重叠边的问题,示例程序是从CAD中读取多边形数据,方便演示各种...
C++ stl set 求集合的交集并集差集 编译环境为dev C++
AutoJs源码-交集_并集_差集_去重(1)。本资源购买前提醒:本源码都是实际autojs项目模板,安装好autojs直接运行即可打开。1、支持低版本autojs。2、资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您...
本文通过多种实现方式给大家介绍了JS计算两个数组的交集、差集、并集、补集 的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
彩票简单工具可用来对彩票大底进行交集处理并得出交集并集和差集
C# 两个datatable中的数据快速比较返回交集 并集或差集 网上的例子。但没有实例下载。新人有点难明白。对初学者还是有点难。完整源码。让新人学习。
求java数组的交集,并集,差集 实现方法简单但很实用
算法流程: 从数组1的尚未比较的元素中拿出第一个元素array1(i),用array1(i)与array2(j)进行比较(其中j>i且j的长度),可能出现下面两种情况, 1. 数组2中找到了一个与array1(i)相等的元素,则将array2(j)与array...
主要介绍了JS实现的集合去重,交集,并集,差集功能,结合实例形式分析了javascript基于数组实现的集合去重、交集、并集、差集等相关实现技巧,需要的朋友可以参考下
C#对比数组之间交集,差集,并集。可直接使用,无需修改
在数学中,我们经常需要对矢量之间的关系进行分析,包括求交集、并集和差集等运算。下面将对这些概念进行具体解释。 1. 交集: 矢量的交集是指两个矢量中共同存在的元素所构成的集合。假设有两个矢量A和B,它们分别...
java 容器取交集、并集、补集、差集示例
JavaScript应用实例-交集_并集_差集_去重(1).js
利用带头结点的单链表实现两个集合的并、交、差运算。(难易程度:低) [实验目的] 1、掌握线性表的链表存储结构。 2、掌握在单链表上基本操作的实现。...4、要求不改变原来的集合,并集、交集和差集分别另外存放。