【发布时间】:2012-03-24 16:44:41
【问题描述】:
我正在学习 SQL,我根本没有做任何测试,所以我很抱歉我的愚蠢问题。 显然(在我的猜测中,LOL)LEFT 和 RIGHT 连接可以等效地反转表(操作数)。是这样吗?
如果是,那为什么我更喜欢写这个:
SELECT * FROM aaa LEFT OUTER JOIN bbb ON aaa.x = bbb.x
而不是这个:
SELECT * FROM bbb RIGHT OUTER JOIN aaa ON aaa.x = bbb.x
【问题讨论】:
-
ON子句中的顺序无关紧要——重要的是外连接的内容和方式(左、右、全)。就个人而言,我看不到RIGHT的用途,我总是使用LEFT... -
我知道 a=b 和 b=a 没有区别,我说的是连接操作数
-
只要表和的操作数颠倒,它们是等价的。无论 OUTER JOIN'd 是什么,都变成可选的(意思是,如果没有定义关系的数据,则该引用中的任何列都可以是
NULL)。 -
与
NATURAL JOIN的原因相同——ANSI 并不完美,它有助于指示方向。另外,不能有 LEFT 没有 RIGHT。这就像说你相信撒旦,但不相信上帝...... -
是的,但是为什么需要方向,因为我可以反转表名?例如 >= 和 = b === b