我有以下要求:
select * from tbA A, tbB B, tbC C, tbD D where A.ID=B.ID and B.ID2= C.ID2 and A.ID=D.ID and C.ID3=D.ID3 and B.ID4=D.ID4 and A.Foo='Foo'
我已经多次听说该连接语法已被弃用,我应该改用’JOIN’关键字。
我如何在如此复杂的联接(将多个表联接到属于不同表的多个列上)中做到这一点?您是否认为此最佳做法仍然适用于此?
这是一个品味问题,但我更喜欢JOIN关键字。它使逻辑更清晰,并且与它附带的LEFT OUTER JOIN语法更加一致。请注意,您还可以使用INNER JOIN(与JOIN同义词)。
语法是
a JOIN b ON expression relating b to all of the tables before
b可以是一个联接本身。对于内部联接来说,这无关紧要,但是对于外部联接,您可以像这样控制联接的顺序:
select * from a left join d join c on d.i = c.i on a.k = d.k
在此,a左连接到d和c之间的内部连接。
这是您的查询:
select * from tbA A join tbB B on A.ID = B.ID join tbC C on B.ID2 = C.ID2 join tbD D on A.ID = D.ID and C.ID3 = D.ID3 and B.ID4 = D.ID4 where A.Foo='Foo'