【发布时间】:2012-07-11 18:18:52
【问题描述】:
在MySQL documentation for joins,一位同事今天向我指出了这颗宝石:
RIGHT JOIN的工作方式类似于LEFT JOIN。为了保持代码跨数据库的可移植性,建议您使用LEFT JOIN而不是RIGHT JOIN。
有人能解释一下吗?这让我觉得这可能是过去时代的残余——也许文档的意思是说“为了保持代码与早期版本的 MySQL 反向兼容......”
是否有不支持RIGHT JOIN 的现代RDBMS?我知道RIGHT JOIN 是LEFT JOIN 的语法糖,任何RIGHT JOIN 都可以表示为LEFT JOIN,但是如果您朝那个方向编写查询,有时可读性会受到影响。
这个建议仍然现代有效吗?是否有充分的理由避免使用RIGHT JOIN?
【问题讨论】:
-
我倾向于避免右连接,因为我更习惯于考虑左连接,但有时它们很有用。相关Does anyone use Right Outer Joins?.
-
我也倾向于使用左连接 - 在构建查询时,您倾向于从一个方向思考,从数据的内核开始,然后扩展,使左连接更多两者自然。但我很惊讶地看到 MySQL 文档说存在可移植性问题。
-
我觉得很有趣的是,MySQL 手册关心可移植性,而他们在许多其他地方都忽略了它。
-
使用从右到左语言的人是否倾向于更频繁地使用右连接?
-
Mathieu - 这是一个很好的问题 =) 我不确定他们是否这样做,因为并不是真正的 LtoR 与 RtoL 让左加入更自然,但更多的是倾向于从记录开始你想显示所有,然后用引用加入,这是左连接的方向。
标签: mysql