我只是练习使用Bigquery并尝试在其中使用我的SQL查询之一

declare @id int
select @id = 1
while @id >=1 and @id <= 1000
begin
    insert into Quincy values(@id, 'Rank: ' + convert(varchar(5), @id))
end

此命令对表运行了1000次插入,我注意到bigquery不允许在其上声明值,因此@id在这里不起作用。我可以在BigQuery上像这样运行循环吗?

最佳答案

在处理sql时,最好不要使用基于游标的逻辑,而是需要将自己调整为基于集的处理。特别是对于BigQuery,它还不支持游标处理和过程逻辑,但幸运的是,它对ARRAY具有丰富的支持,可以在此处使用

由于您的问题有点抽象-下面的示例也很抽象,但给了您一个想法

#standardSQL
INSERT INTO `project.dataset.Quincy` (id, col)
WITH array_to_loop_through AS (
  SELECT id
  FROM UNNEST(GENERATE_ARRAY(1, 1000, 1)) id
)
SELECT id, CONCAT('Rank: ', CAST(id AS STRING))
FROM array_to_loop_through

关于loops - 在BigQuery中使用声明和循环来插入数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55433099/

10-09 17:23
查看更多