【发布时间】:2020-01-31 14:46:13
【问题描述】:
ARRAY_AGG (link) 函数的文档说结果数组中的元素将按随机顺序排列,并且随着开始的不同,此顺序可能会改变。
如何对数组中的元素进行排序?
【问题讨论】:
ARRAY_AGG (link) 函数的文档说结果数组中的元素将按随机顺序排列,并且随着开始的不同,此顺序可能会改变。
如何对数组中的元素进行排序?
【问题讨论】:
可以对数组进行排序,但这取决于您当时希望如何排序以及如何使用此顺序。我建议您查看以下文档,了解如何在 Spanner 上使用数组。
在那里,您将找到有关如何订购和可用选项的更多信息。
如果这些信息对您有帮助,请告诉我!
【讨论】:
Spanner 中的 ARRAY_AGG 子句目前不支持 ORDER BY
不幸的是,目前不允许这样做:
从 UNNEST([2,1,3,4,2,-1]) 中选择 ARRAY_AGG(x ORDER BY x) 作为 x;
虽然这是允许的,但它也不起作用:
SELECT ARRAY_AGG(x) FROM (SELECT x FROM UNNEST([2,1,3,4,2,-1]) as x ORDER BY x);
可用的选项有:
如果您将 ARRAY_AGG 结果返回给客户端,则结果可以在那里排序
或
如果您必须按顺序返回数据,也许您不必使用 ARRAY_AGG?在这种情况下,您可以使用 ORDER BY 子句保证排序。这是有效的:
SELECT x FROM UNNEST([2,1,3,4,2,-1]) as x ORDER BY x;
答案可能在未来发生变化,因此如果此时查看,最好再次查看 ARRA_AGG 文档 (link)
【讨论】: