小编典典

我应该对多个表上的复杂联接使用sql JOIN关键字吗?

sql

我有以下要求:

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’关键字。

我如何在如此复杂的联​​接(将多个表联接到属于不同表的多个列上)中做到这一点?您是否认为此最佳做法仍然适用于此?


阅读 148

收藏
2021-04-15

共1个答案

小编典典

这是一个品味问题,但我更喜欢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'
2021-04-15