`

inner join、outer join和cross join的区别

 
阅读更多

现有两张表,Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的:
Table A 是左边的表。Table B 是右边的表。

1.INNER JOIN 产生的结果是AB的交集

SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
INNER JOIN 产生的结果是AB的交集          INNER JOIN 产生的结果是AB的交集
2.LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值           LEFT [OUTER] JOIN 产生表A的完全集,而B表中匹配的则有值
3.RIGHT [OUTER] JOIN 产生表B的完全集,而A表中匹配的则有值,没有匹配的则以null值取代。
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name
图标如left join类似。

4.FULL [OUTER] JOIN 产生A和B的并集。对于没有匹配的记录,则会以null做为值。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name 
你可以通过is NULL将没有匹配的值找出来:
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null 
 FULL [OUTER] JOIN 产生A和B的并集           FULL [OUTER] JOIN 产生A和B的并集

5. CROSS JOIN 把表A和表B的数据进行一个N*M的组合,即笛卡尔积。如本例会产生4*4=16条记录,在开发过程中我们肯定是要过滤数据,所以这种很少用。
SELECT * FROM TableA CROSS JOIN TableB 

分享到:
评论

相关推荐

    SQL中inner join、outer join和cross join的区别

    对于SQL中inner join、outer join和cross join的区别很多人不知道,我也是别人问起,才查找资料看了下,跟自己之前的认识差不多,如果你使用join连表,缺陷的情况下是inner join,另外,开发中使用的left join和right...

    SQL中的left outer join,inner join,right outer join用法详解

    * FULL OUTER JOIN:LEFT OUTER 和 RIGHT OUTER 中所有行的超集。 内连接(Inner Join) 内连接是最常见的一种连接,它也被称为普通连接,而 E.FCodd 最早称之为自然连接。例如: SELECT * FROM t_institution i ...

    SQL联合查询inner join、outer join和cross join的区别详解

    对于开发使用到数据库的应用,免不了就要使用联合查询,SQL中常用的联合查询有inner join、outer join和cross join;这三者的区别很多人都应该不是很清楚,包括我自己,下面我们一起来看看,如果你使用join连表,...

    inner join-outer join-cross join查询方式总结

    表连接 内连接 外连接 交叉连接表连接 内连接 外连接 交叉连接表连接 内连接 外连接 交叉连接

    join on 语句及扩展

    Join on/inner join on/full join on/full outer join on/left join on/right join on/cross join on; 在使用jion时,on和where条件的区别;

    sql中join总结

    SQL中大概有这么几种JOIN:cross joininner joinleft outer joinright outer joinfull outer join他们都是基于cross join(笛卡尔乘积),举例说明

    LINQ to SQL语句之Join和Order By

    SELECT [t0].[FirstName], [t0].[LastName], [t2].[TerritoryDescription] FROM [dbo].[Employees] AS [t0] CROSS JOIN [dbo].[EmployeeTerritories] AS [t1] INNER JOIN [dbo].[Territories] AS [t2] ON [t2]....

    SQL多表连接查询、多表关联

    sql多表连接查询inner join, left join , right join ,full join ,cross join Posted on 2008-05-07 21:55 我开始懂了 阅读(21431) 评论(9) 编辑 收藏 inner join,full outer join,left join,right jion 内部连接 ...

    MySQL中基本的多表连接查询教程

    一、多表连接类型 1. 笛卡尔积(交叉连接) ...一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN  2. 内连接INNER JOIN 在MySQL中把I SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELE

    Oracle 数据库连接查询SQL语句

    内连接(inner join)。 外连接: 全连接(full join)、左连接(left join)、右连接(right join)。 交叉联接(cross join)。 外连接与内连接不一样,外连接返回的查询结果中不仅包含符合条件的行,还包括左表(左...

    SQL语句多表查询

    一、外连接 1、左连接 left join 或 left outer join 2、右连接 right join 或 right outer join ...二、内连接 join 或 inner join 三、交叉连接 cross join 四、两表关系为一对多,多对一或多对多时的连接语句

    sql 外联、内联简单的例子

    INNER JOIN 仅对满足连接条件的CROSS中的列 LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行 RIGHT OUTER JOIN 与LEFT相同,但两个表的角色互换 FULL OUTER JOIN LEFT OUTER 和 RIGHT OUTER中所有行的超集

    MySQL多表查询(四).pdf

    交叉连接(CROSS JOIN):理解交叉连接的概念和使用场景。 自连接(SELF JOIN):在一个表内进行连接以解决特定问题。 子查询:在SELECT、INSERT、UPDATE、DELETE语句中使用子查询。 派生表(Derived Table):在...

    数据库连接表查询

    数据库连接表查询 一、交叉连接(CROSS JOIN) 二、内连接(INNER JOIN) 三、外连接(OUTER JOIN)

    精通SQL数据库连接.doc

    FULL OUTER JOIN ( Product CROSS JOIN Color ) ON Catalog.item = Product.item AND Catalog.item_color = Color.color_name;   成为数据库专家 JOIN声明可以有效地找到你所需要的信息并避免带来麻烦。通过使用...

    SQL语言查询基础:连接查询 联合查询 代码

    连接类型可以分为三种:内连接(INNER JOIN)、外连接(LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN)和交叉连接(CROSS JOIN)。 内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些...

    你真的会玩SQL吗?内连接、外连接

     交叉联接 得到所连接表的所有组合 (笛卡儿集)cross join  内联接得到连接表的满足条件的记录组合inner join on  外联接(左、右)得到一个表的所有行,及其余表满 足连接条件的行 full | left | right ...

    SQL连接查询介绍

    外连接(LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN)返回查询结果集合中的不仅包含符合连接条件的行,而且还包括左表、右表或两个表中的所有数据行。 交叉连接(CROSS JOIN)返回被连接的两个表所有数据...

    SQL Server数据库技术大全 电子书

    2.3.4 交叉联接(CROSS JOIN)/40 2.3.5 联接的替代写法/40 2.3.6 联合(UNION)/41 2.4 SQL数据类型/42 2.4.1 精确数字类型/43 2.4.2 近似数字类型/43 2.4.3 字符串类型/43 2.4.4 Unicode字符串类型/44 2.4.5 二...

Global site tag (gtag.js) - Google Analytics