使用BigQuery的SELECT INTO功能

5

MySQL/Oracle/Teradata有SELECT ... INTO FROM ...语句可以从表中获取值并将其分配给变量。在BigQuery中我该如何做到这一点?

SELECT 
    c1, c2, c3, ...
INTO 
    @v1, @v2, @v3,...
FROM 
    table_name
WHERE 
    condition;

对于想要在 bq 中使用 SELECT INTO 创建表的人来说,这不是有效的 SQL 命令。在 bq 中的正确方法是运行 SQL 查询语句,然后将结果保存为一个表。 - smoore4
@smoore4,你的情况能用“INSERT INTO <table> SELECT ...”来解决吗? - Yun Zhang
2个回答

6

BigQuery 中的对应语句是从子查询中获取值的 SET 语句。

以下是一个示例:

SET (v1, v2, v3) = (SELECT AS STRUCT c1, c2, c3 FROM table_name WHERE condition LIMIT 1)

它的行为与所提出的查询完全相同。

请参阅文档中的更多示例。


你会如何进一步使用它?因为BQ不支持运行多个查询。 - Pentium10
现在可以使用脚本、存储过程和临时表了,目前处于Beta版本。更多信息请参见此处 - Yun Zhang
很高兴你纠正了你的答案 - 但是你仍然缺少 LIMIT 1 - 如果子查询返回多行的情况下。 - Mikhail Berlyant
(SELECT ...) 语法强制从选择中返回 0..1 行,否则会通知用户有关其使用的错误。示例应与问题中的内容相同,其中也可能出现错误以引发错误。 - Yun Zhang

0

我认为正确的方式应该是以下这样:

SET (v1, v2, v3) = (SELECT AS STRUCT c1, c2, c3 FROM table_name WHERE condition LIMIT 1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接