左外连接和左连接之间有什么区别?结果是一样的。

31 浏览
0 Comments

左外连接和左连接之间有什么区别?结果是一样的。

什么是 LEFT JOINLEFT OUTER JOIN 的区别?

admin 更改状态以发布 2023年5月20日
0
0 Comments

回答你的问题,left join和 left outer join之间没有区别,它们完全相同,也就是说……

在顶层,主要有三种连接类型:

  1. INNER连接
  2. OUTER连接
  3. CROSS连接

  1. INNER JOIN - 仅在两个表中都存在时返回数据。

  2. OUTER JOIN分为3种类型:

    1. LEFT OUTER JOIN - 仅在左表中存在时返回数据。
    2. RIGHT OUTER JOIN - 仅在右表中存在时返回数据。
    3. FULL OUTER JOIN - 在两个表中任意一个表中存在时返回数据。
  3. CROSS JOIN,顾名思义,连接的是所有组合。
    类似于我们仅列出参与连接的表(在SELECT语句的FROM子句中),用逗号将它们分隔开来。


需要注意的事项:

  • 如果只提到JOIN,则默认为INNER JOIN
  • OUTER连接必须是LEFT | RIGHT | FULL,不能简单地说OUTER JOIN
  • 您可以删除OUTER关键字,仅使用LEFT JOINRIGHT JOINFULL JOIN

对于那些想更好地可视化这些内容的人,请访问此链接:SQL联接的视觉解释

0
0 Comments

根据文档:FROM (Transact-SQL)

 ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [  ] ]
    JOIN

关键字OUTER 被标志为可选的(括在方括号中)。在这种情况下,您指定 OUTER 还是不指定都没有任何区别。请注意,虽然连接条件的其他元素也是可选的,但是省略它们将会产生不同的结果。

例如,在JOIN子句中整个类型部分是可选的,如果只指定 JOIN,则默认为 INNER。换句话说,这是合法的:

SELECT *
FROM A JOIN B ON A.X = B.Y

以下是等效语法的列表:

A LEFT JOIN B            A LEFT OUTER JOIN B
A RIGHT JOIN B           A RIGHT OUTER JOIN B
A FULL JOIN B            A FULL OUTER JOIN B
A INNER JOIN B           A JOIN B

此外,还可以参考我在这个其他SO问题上留下的答案:SQL left join vs multiple tables on FROM line?

0