【发布时间】:2023-04-09 00:37:02
【问题描述】:
在 bigquery 中使用嵌套的 LOOP 或 WHILE 循环时,我似乎无法再次遍历外部循环。问题可以用下面的代码重现。
DECLARE i int64 DEFAULT 0;
DECLARE j int64 DEFAULT 0;
DECLARE k int64 DEFAULT 0;
WHILE i < 3 DO
SET i = i + 1;
WHILE j < 2 DO
SET j = j + 1;
IF j = 2 THEN
SET k = k+7;
END IF;
EXECUTE IMMEDIATE """
WITH test AS(SELECT @i2 AS i, @j2 AS j, @k2 AS k)
SELECT * FROM test
"""
USING i AS i2, j AS j2, k AS k2;
END WHILE;
END WHILE;
作为这个的输出,Bigquery 给了我两次迭代(内部循环):
| Row | i | j | k |
|---|---|---|---|
| 1 | 1 | 1 | 0 |
| Row | i | j | k |
|---|---|---|---|
| 1 | 1 | 2 | 7 |
我希望,当我们结束内部 while 循环时,我们会转到外部循环并重新开始。 以类似的方式结束:
| Row | i | j | k |
|---|---|---|---|
| 1 | 2 | 2 | 7 |
这样做的正确方法是什么?当使用相同的设置但具有 LOOP 和 BREAK 条件时,结果与上述说明完全相同。当使用 CONTINUE 而不是 BREAK 时,我的查询将永远运行/一直挂在第二个语句中
【问题讨论】:
标签: loops while-loop google-bigquery