Presto обычно выполняет соединение в объявленном порядке (когда оптимизация на основе затрат отключена), но пытается избегать перекрестных соединений , если это возможно. Если вы запустите EXPLAIN в своем запросе, вы сможете увидеть фактический порядок соединения для вашего запроса.
В приведенном выше примере вы можете избежать перекрестных соединений вручную, принудительно -ассоциативное соединение с круглыми скобками, аналогично тому, как работает arithmeti c (например, a - (b - c)
):
WITH
a(x) AS (VALUES(1)),
b(x,y) AS (VALUES (1,'a')),
c(y) AS (VALUES 'a')
SELECT *
FROM c JOIN (b JOIN a USING (x)) USING (y)