只需翻转表格,就可以将RIGHT OUTER写为LEFT OUTER

时间:2014-07-28 06:09:09

标签: sql sql-server

我们可以使用右连接而不是左连接,反之亦然,只需在查询中翻转表位置即可。那么为什么我们需要两个连接?

3 个答案:

答案 0 :(得分:1)

是。以下查询具有相同的结果:

SELECT *
FROM table1
LEFT JOIN table2 ON table1.column1 = table2.column2


SELECT *
FROM table2
RIGHT JOIN table1 ON table1.column1 = table2.column2

答案 1 :(得分:0)

如果开发人员想要#t1中的所有记录并且只匹配来自#t2的记录,那么他可以将查询编写为 从#t1左连接#t2中选择*或从#t2中选择*右连接#t1

两者都是一样的。他们给出了相同的结果。

首先,不仅仅是这两种类型的连接。还有一个FULL OUTER JOIN,在这种情况下,结果中包含来自两侧的不匹配行。此外,还提供INNER JOIN(仅匹配行)和CROSS JOIN(笛卡尔积)。

在一个简单的查询中,例如此线程中的示例,可以使用LEFT或RIGHT并反转表以返回所需的结果。但是,随着向查询添加其他表,可能更容易添加具有不同连接类型的表,而不是重构整个查询以实现相同的语义。

答案 2 :(得分:0)

是的,唯一的区别是您编写连接表的顺序,您可以将LEFT重写为RIGHT,反之亦然。严格来说,我们不需要同时拥有两个连接。

discussion on why people use RIGHT joins