左连接是否可以表示为右连接,反之亦然?
Can a left join be expressed as a right join and vice versa?
假设我们有一个 EMPLOYEE
和一个 DEPENDENT
table。每个员工都有一个标识符 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)
?
是的,确实如此,但是,我强烈建议不要使用 RIGHT JOIN。
由于我们的自然阅读顺序是从左到右、从上到下,因此 RIGHT JOIN 以这种方式非常不自然。
此外,如果您将混合使用 LEFT JOIN 和 RIGHT JOIN,那么将很难完成。
假设我们有一个 EMPLOYEE
和一个 DEPENDENT
table。每个员工都有一个标识符 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)
?
是的,确实如此,但是,我强烈建议不要使用 RIGHT JOIN。 由于我们的自然阅读顺序是从左到右、从上到下,因此 RIGHT JOIN 以这种方式非常不自然。 此外,如果您将混合使用 LEFT JOIN 和 RIGHT JOIN,那么将很难完成。