【问题标题】:How to order ARRAY in Spanner如何在 Spanner 中订购 ARRAY
【发布时间】:2020-01-31 14:46:13
【问题描述】:

ARRAY_AGG (link) 函数的文档说结果数组中的元素将按随机顺序排列,并且随着开始的不同,此顺序可能会改变。

如何对数组中的元素进行排序?

【问题讨论】:

    标签: google-cloud-spanner


    【解决方案1】:

    可以对数组进行排序,但这取决于您当时希望如何排序以及如何使用此顺序。我建议您查看以下文档,了解如何在 Spanner 上使用数组。

    在那里,您将找到有关如何订购和可用选项的更多信息。

    如果这些信息对您有帮助,请告诉我!

    【讨论】:

      【解决方案2】:

      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)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-28
        • 2016-01-24
        • 2015-06-10
        相关资源
        最近更新 更多