【发布时间】: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