比较内连接和外连接 SQL 语句

Posted

技术标签:

【中文标题】比较内连接和外连接 SQL 语句【英文标题】:Compare inner join and outer join SQL statements 【发布时间】:2010-12-20 17:09:16 【问题描述】:

内连接和外连接有什么区别?这两种join的具体含义是什么?

【问题讨论】:

【参考方案1】:

INNER JOIN 返回两个表中都存在的行

OUTER JOIN 返回任一表中存在的所有行

【讨论】:

如果两个表中都存在连接条件,则内连接从两个表中返回值......【参考方案2】:

***有一篇关于这个主题的不错的长文章 [这里](http://en.wikipedia.org/wiki/Join_(SQL))

但基本上:

内连接返回所有表中存在满足 where 子句的行的结果 外连接返回结果,其中至少有一个表中存在满足 where 子句的行

【讨论】:

【参考方案3】:

看看杰夫阿特伍德的出色表现:

A Visual Explanation of SQL Joins

马克

【讨论】:

当前页面现在位于blog.codinghorror.com/a-visual-explanation-of-sql-joins 存在一些小的格式问题,但与原来的相同。【参考方案4】:

您使用 INNER JOIN 从两个表中返回所有匹配的行。 IE。在结果表中,所有行和列都有值。

在 OUTER JOIN 中,结果表可能有空列。外连接可以是 LEFT 也可以是 RIGHT

LEFT OUTER JOIN 返回第一个表中的所有行,即使第二个表中没有匹配项。

RIGHT OUTER JOIN 返回第二个表中的所有行,即使第一个表中没有匹配项。

【讨论】:

【参考方案5】:

假设一个包含客户和订单的示例模式:

INNER JOIN:仅检索具有订单的客户。

LEFT OUTER JOIN:检索所有有订单或无订单的客户。

RIGHT OUTER JOIN:检索所有有或没有匹配客户记录的订单。

更详细的信息请见Inner and Outer Join SQL Statements

【讨论】:

【参考方案6】:

如果记录出现在两个表中,内连接只返回一个连接行。 取决于方向的外连接将显示一个表中的所有记录,并连接到存在相应行的连接表中的数据

【讨论】:

【参考方案7】:

使用数学集,

Inner Join is A ^ B;
Outer Join is A - B.

所以 (+) 是您在查询中的 A 方。

【讨论】:

以上是关于比较内连接和外连接 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

sql左连接 右连接 内连接 外连接都是啥

内连接和外连接的区别

sql 内连接和外连接的是啥意思?

sql server 2005 中的内连接和外连接 怎么理解?

SQL中内连接和外连接的区别

SQL Server中内连接和外连接的区别