Sql 加入Oracle:在=符号的哪一侧的哪个字段?
使用ANSI-89(旧)或ANSI-92(“新”)方法连接表格时,将两个连接表格中的字段放置在哪一侧是否重要 例如,做以下事情是否更好:Sql 加入Oracle:在=符号的哪一侧的哪个字段?,sql,oracle,join,ansi-92,Sql,Oracle,Join,Ansi 92,使用ANSI-89(旧)或ANSI-92(“新”)方法连接表格时,将两个连接表格中的字段放置在哪一侧是否重要 例如,做以下事情是否更好: From TABLE_1 A Join TABLE_2 B on A.ID = B.ID 还是下面的更好 on B.ID = A.ID 这仅仅是美学吗?或者它会影响连接的工作方式吗 编辑:为了进一步澄清,关于左连接呢?例如: From TABLE_1 A Left Join TABLE_2 B on A.ID = B.ID
From
TABLE_1 A
Join
TABLE_2 B
on A.ID = B.ID
还是下面的更好
on B.ID = A.ID
这仅仅是美学吗?或者它会影响连接的工作方式吗
编辑:为了进一步澄清,关于左连接呢?例如:
From
TABLE_1 A
Left Join
TABLE_2 B
on A.ID = B.ID
这和我的一样吗
on B.ID = A.ID
但是,如果使用ANSI-89
其中A.ID=B.ID(+)
与其中B.ID=A.ID(+)
不同,因为第二个将A连接到B上?因此=
运算符是对称的,因此A.ID=B.ID
与B.ID=A.ID
完全相同。就个人而言,我更喜欢将驱动表中的字段(从子句中的字段)放在操作符的左侧,但这纯粹是一种审美偏好 这没什么区别。顺序唯一重要的时候是当你做左和右外部连接时,但是那些关键字都落在ON关键字之前。我会更新原始问题,但是如果你有左连接,并且做了B.ID=a.ID
,你是说它仍然和ANSI-92中的a.ID=B.ID
一样工作吗?但对于ANSI-89,顺序确实很重要(即A.ID=B.ID(+)
与B.ID=A.ID(+)不同
因为它表明您将A连接到B上,而不是B连接到A上?是的,在任何情况下,A.ID=B.ID都可以与B.ID=A.ID互换,在这个选择中没有什么超出美学的。我可能不应该提到左连接。从表_1中,左外连接表_2 B将不同于表_2 B左外连接表_1A、 但这与你的问题无关,所以我应该省略它。我通常会同意,使用ANSI-89看起来更好。但是,当使用ANSI-92时,我发现,特别是当我的From变成T1在T2.ID=T1.ID和T2.TYPE='X'和T2.DATE=sysdate
等上连接T2时,更容易识别正在使用的表。T他(+)
应该应用于外部联接表上的列,因此它应该是A.ID=B.ID(+)
vs。