SQL中LEFT和Right join的原因是啥

Posted

技术标签:

【中文标题】SQL中LEFT和Right join的原因是啥【英文标题】:What is reason of LEFT and Right join in SQLSQL中LEFT和Right join的原因是什么 【发布时间】:2015-01-26 20:13:46 【问题描述】:

例如:我有两张桌子

表代理

表应用

1)

select a.agentID, agent_nm from agent a
left join application ap on (ap.agentID=a.agentID);

我在上面的查询中使用左连接,得到的结果是

2)

select a.agentID, agent_nm from application ap
right join agent a  on (ap.agentID=a.agentID);

我在上面的查询中使用了右连接,得到的结果与使用左连接得到的结果相同。喜欢

所以我的问题是为什么左右加入mysql。我们可以用左连接检索数据,只交换表。那么为什么我们在查询中使用正确的连接。同样的方式,我们可以只使用右连接而不使用左连接来实现目标。 那么SQL中左右连接的原因是什么。谁能解释一下逻辑?

【问题讨论】:

@Jens 感谢有问题的编辑。 右连接在连接多个(多于两个)表时会很有用 What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN? 【参考方案1】:

它是对称的,LEFT 和 RIGHT 外连接是可交换的。大多数人使用 LEFT OUTER 联接,因为更容易认为“主表”左联接“附加数据”...

【讨论】:

【参考方案2】:

真的,没什么原因。事实上,MySQL 文档说:

RIGHT JOIN 的工作方式类似于 LEFT JOIN。为了保持代码跨数据库的可移植性,建议您使用LEFT JOIN 而不是RIGHT JOIN

这只是你的一种选择,少数人利用。

【讨论】:

【参考方案3】:

当您有一个更复杂的语句并且想要添加一些右连接的内容时,您可能不想仅仅因为您只有左连接而交换语句。 还可以使查询更难阅读。

【讨论】:

以上是关于SQL中LEFT和Right join的原因是啥的主要内容,如果未能解决你的问题,请参考以下文章

SQL中left join on 、right join on、inner join on之间的区别

SQL语句(inner join,left out join,right out join三者的不同

SQL语句中LEFT JOIN和RIGHT JOIN 以及INNER JOIN的区别

sql的left join right join inner join之间的区别

sql中left join、right join、inner join有啥区别

sql中in和exist语句的区别?(补充了left join和right join)