【问题标题】:Can a left join be expressed as a right join and vice versa? [duplicate]左连接是否可以表示为右连接,反之亦然? [复制]
【发布时间】:2016-10-22 18:32:09
【问题描述】:

假设我们有一个EMPLOYEE 和一个DEPENDENT 表。每个员工都有一个标识符 Ssn,可能还有一个标识符为 Essn 的家属。以下两个查询是否等效?

SELECT DISTINCT E.Lname, D.Dependent_name
FROM ((EMPLOYEE E) LEFT OUTER JOIN (DEPENDENT D) ON E.Fname=D.Dependent_name);

SELECT DISTINCT E.Lname, D.Dependent_name
FROM ((DEPENDENT D) RIGHT OUTER JOIN (EMPLOYEE E) ON E.Fname=D.Dependent_name);

一般来说,是不是真的

(TABLE A) LEFT OUTER JOIN (TABLE B)

相同
(TABLE B) RIGHT OUTER JOIN (TABLE A)

?

【问题讨论】:

  • 如果您反转表格,您可以使用左连接,例如。 tableA 右连接 tableB 与 tableB 左连接 tableA 相同
  • 是的,它应该是这样工作的。我注意到使用第一种形式 (LEFT JOIN) 更常见,但我认为是因为首先开始编写您需要的数据然后是可选的数据更自然。

标签: mysql sql join outer-join


【解决方案1】:

是的,确实如此,但是,我强烈建议不要使用 RIGHT JOIN。 由于我们的自然阅读顺序是从左到右和从上到下,因此 RIGHT JOIN 以这种方式非常不自然。 此外,如果您将 LEFT JOIN 和 RIGHT JOIN 混合使用,将非常非常难以完成。

【讨论】:

  • @JohnZach, P.s.如果你喜欢这个答案,你可能想要投票
猜你喜欢
  • 2013-02-13
  • 2021-03-10
  • 2020-07-28
  • 2012-06-14
  • 2018-12-27
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多