Postgresql unest()函数的有序结果

Postgresql unest()函数的有序结果,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,可以保证函数unnest()将按这些顺序返回值,它们是如何定位的 也就是说,例如: arr (INTEGER[]) --------------- {{3,5},{33,3}} 此查询: 从“表”中选择unnest(arr) 永远都会回来 3 5 33 3 ? 或者,结果的顺序可能与数组元素的顺序不同?这里有一个对您有用的链接 这里有一个假设: unnest()几乎肯定会按顺序扫描数组,但只扫描一次 在一个大型查询中嵌入这样的信息,即不再保证排序 引自此帖: unnest()以与输入

可以保证函数
unnest()
将按这些顺序返回值,它们是如何定位的

也就是说,例如:

arr (INTEGER[])
---------------
{{3,5},{33,3}}
此查询:

从“表”中选择unnest(arr)

永远都会回来

 3
 5
 33
 3
?


或者,结果的顺序可能与数组元素的顺序不同?

这里有一个对您有用的链接

这里有一个假设:

unnest()几乎肯定会按顺序扫描数组,但只扫描一次 在一个大型查询中嵌入这样的信息,即不再保证排序

引自此帖:

unnest()以与输入相同的顺序返回其输出。自从 数组已排序,它将按相同的输出顺序返回 不耐烦。但是,由于unnest()只返回单个列(尽管 可能是复合类型)它无法在 因此输出,以便在查询的其他地方保持相同的顺序 有必要在输出上使用“ROW_NUMBER()OVER(…)” unnest()-在将其与任何其他unnest调用或表连接之前 -在将其提供给查询的其余部分之前。为9.4建议的“具有顺序性”功能将导致unnest()[和其他] 函数将此附加列与常规输出一起输出。 这是,我非常喜欢的,一个易用性增强,使它变得更容易 现在可以使用CTE/WITH和/或sub查询来完成某些操作

另一个有用的链接:


    • 这里有一个有用的链接

      这里有一个假设:

      unnest()几乎肯定会按顺序扫描数组,但只扫描一次 在一个大型查询中嵌入这样的信息,即不再保证排序

      引自此帖:

      unnest()以与输入相同的顺序返回其输出。自从 数组已排序,它将按相同的输出顺序返回 不耐烦。但是,由于unnest()只返回单个列(尽管 可能是复合类型)它无法在 因此输出,以便在查询的其他地方保持相同的顺序 有必要在输出上使用“ROW_NUMBER()OVER(…)” unnest()-在将其与任何其他unnest调用或表连接之前 -在将其提供给查询的其余部分之前。为9.4建议的“具有顺序性”功能将导致unnest()[和其他] 函数将此附加列与常规输出一起输出。 这是,我非常喜欢的,一个易用性增强,使它变得更容易 现在可以使用CTE/WITH和/或sub查询来完成某些操作

      另一个有用的链接:


      @OTARIKI看起来像是unnest将元素保持在有序状态,但这并不能保证。您可以使用generate_下标来保证order@OTARIKI看起来unnest可以使元素保持有序,但不能保证这一点。您可以使用generate_下标来保证订单