我只是练习使用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上像这样运行循环吗?
答案 0 :(得分:1)
在处理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