由于 UNNEST 函数展开的结构是依赖于数组元素顺序的,所以在使用 UNNEST 函数时,需要明确传入的数组的元素顺序。以下是示例代码:
假设有以下查询语句:
SELECT *
FROM mydataset.mytable
CROSS JOIN UNNEST(myarray) AS products
假设 myarray 是一个包含数组元素 [1,2,3] 和 [4,5,6] 的数组。当使用上述查询语句时,返回的结果可能是以下两种结构之一:
结果1:
product |
---|
1 |
2 |
3 |
4 |
5 |
6 |
结果2:
product |
---|
4 |
5 |
6 |
1 |
2 |
3 |
可以看到,结果的顺序并非确定的。
为了得到确定的结果,需要在传入 UNNEST 函数的数组中定义元素的顺序。以下是示例代码:
SELECT *
FROM mydataset.mytable
CROSS JOIN UNNEST([ [1,2,3], [4,5,6] ]) AS products
在这个示例中,我们将数组 [ [1,2,3], [4,5,6] ]
传入 UNNEST 函数中,这样可以保证返回的结果始终是以下结构:
product |
---|
1 |
2 |
3 |
4 |
5 |
6 |
这样就可以避免由于数组元素顺序不同而导致的结果不同的问题。