是否需要RIGHT join,因为我们可以通过改变表名来使用LEFT join获得相同的结果

时间:2013-01-15 06:59:17

标签: mysql sql

  

可能重复:
  right join versus left join

是否需要RIGHT join,因为只需更改表名就可以使用LEFT join实现相同的结果

我有两张桌子人员和订单

P_Id    LastName    FirstName   Address City
1   Hansen  Ola Timoteivn 10    Sandnes
2   Svendson    Tove    Borgvn 23   Sandnes
3   Pettersen   Kari    Storgt 20   Stavanger

O_Id    OrderNo P_Id
1   77895   3
2   44678   3
3   22456   1
4   24562   1
5   34764   15

我有一个关于左连接的查询:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.P_Id=Orders.P_Id
ORDER BY Persons.LastName

并且有正确的加入:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Orders
RIGHT JOIN Persons
ON Orders.P_Id=Persons.P_Id
ORDER BY Persons.LastName

两者都给出了相同的结果。

2 个答案:

答案 0 :(得分:1)

为方便起见,两个版本都存在。正如你所说,只有一个是必要的。

但是,如果只有一个(RIGHT或LEFT),并且您希望在不更改它的情况下向查询添加非内部联接,则有时需要更改大型查询。

使用两者作为选项,通常很容易将非内部联接处理到预先存在的查询中,而无需对查询进行太多其他重写。

至少那是我发现自己编写RIGHT JOIN的唯一一次:当我已经有一个查询并且需要添加一个非内部联接并使其成为LEFT JOIN会导致我重新编写查询而不是我想要的到。

答案 1 :(得分:-1)