Bigquery SQL:使用键值表转换表值

时间:2018-05-20 10:30:12

标签: sql google-bigquery legacy-sql

我有两张桌子。 第一个表包含键值数据:

   Answer_Code |Fruit
   1           |Apple
   2           |Orange
   3           |Pear
   4           |Watermelon

第二个表包含收集的数据

   Participant|Fruit
   Aaa        |1
   Bbb        |2
   Ccc        |3

如何连接这些表,以便第二个表中的Fruit列将替换为第一个表中的Fruit值?

   Participant|Fruit
   Aaa        |Apple
   Bbb        |Orange
   Ccc        |Watermelon

我尝试了以下内容:

SELECT T1.*, T2.*,
FROM [Table1] T1, 
JOIN [Table2] T2 ON T1.Fruit = T2.Fruit,
LIMIT 10;

我收到以下错误:

ON子句必须是AND =每个表中一个字段名称的比较,所有字段名称都以表名为前缀。考虑使用标准SQL .google.com / bigquery / docs / reference / standard-sql /),它允许不相等的JOIN和涉及表达式和残差谓词的比较。

此外,我无法获得UPDATE,SET来处理bigquery。

1 个答案:

答案 0 :(得分:1)

你的ON条款不正确
而不是ON T1.Fruit = T2.Fruit你应该ON T1.Answer_Code = T2.Fruit 您的查询中还有一些额外的逗号

无论如何,您的查询应如下所示

SELECT T2.Participant, T1.Fruit
FROM [Table1] T1 
RIGHT JOIN [Table2] T2 ON T1.Answer_Code = T2.Fruit
LIMIT 10   

还建议将migrate用于BigQuery标准SQL - 标准SQL是查询存储在BigQuery中的数据的首选SQL方言,并且还有多个advantages,包括DML,因此您可以{ {1}}