比较内连接和外连接 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 语句的主要内容,如果未能解决你的问题,请参考以下文章