Google BigQuery эквивалент многостолового внутреннего соединения MySQL - PullRequest
0 голосов
/ 22 октября 2018

Я хотел бы знать, как написать объединение в несколько таблиц в Google BigQuery, аналогичное приведенному ниже для MySQL:

SELECT t2.*, t1.*, t3.* FROM table1 t1, table2 t2, table t3 WHERE t1.field_a=t2.field_a AND t2.field_b=t3.field_b AND t1.field_condition=10

Обратите внимание, что я запрашиваю порядок таблиц в определенном порядке, ноиспользование функции звездочки.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Короче, когда столбцы соответствуют именам (как в вопросе):

#standardSQL
WITH t_a AS (SELECT 1 id_a, 2 v)
, t_b AS (SELECT 1 id_a, 2 id_c, 3 w)
, t_c AS (SELECT 2 id_c, 5 z)

SELECT *
FROM t_a
JOIN t_b USING(id_a)
JOIN t_c USING(id_c)

enter image description here

0 голосов
/ 22 октября 2018

Ниже для BigQuery Standard SQL

#standardSQL
SELECT t2.*, t1.*, t3.* 
FROM table1 t1
JOIN table2 t2 ON t1.field_a=t2.field_a 
JOIN table t3 ON t2.field_b=t3.field_b 
WHERE t1.field_condition=10

выше предполагает, что нет двусмысленности в именах полей

Между тем, ниже все еще работает в BigQuery Standard SQL

SELECT t2.*, t1.*, t3.* FROM table1 t1, table2 t2, table t3 WHERE t1.field_a=t2.field_a AND t2.field_b=t3.field_b AND t1.field_condition=10   

и эквивалентно

#standardSQL
SELECT t2.*, t1.*, t3.* FROM table1 t1
CROSS JOIN table2 t2
CROSS JOIN table t3 
WHERE t1.field_a=t2.field_a AND t2.field_b=t3.field_b AND t1.field_condition=10   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...