Разница между выражениями JOIN в Presto SQL - PullRequest
0 голосов
/ 01 мая 2020

Я хотел бы спросить разницу между следующими выражениями соединения и в каких условиях метод 2 более предпочтителен, чем метод 1.

Можно представить, что таблицы a, b и c являются CTE для, т.е. С AS (xxxxx), b AS (xxxxx) и c AS (xxxxx).

Метод 1:

Select
a.customerid,
b.customerage,
b.customermobile,
a.itemid,
c.itemname
from a 
LEFT JOIN b on 
a.customerid = b.customerid
LEFT JOIN c on
a.itemid = c.itemid 

Метод 2:

Select
a.customerid,
b.customerage,
b.customermobile,
a.itemid,
c.itemname
from ((( a 
LEFT JOIN b on 
(a.customerid = b.customerid))
LEFT JOIN c on
(a.itemid = c.itemid))

1 Ответ

0 голосов
/ 01 мая 2020

Разницы нет. Эта структура:

from a left join
     b left join
     c

точно определена как

from (a left join
      b
     ) left join
     c

(я опускаю пункты on, чтобы упростить объяснение.)

Примечание: Порядок оценки важен для внешних объединений. Но даже для внутренних объединений вышеупомянутое несколько отличается от:

from a left join
     (b left join
      c
     )

Например, это даже не будет проанализировано, если предложение on между b и c ссылается на a как хорошо.

...