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查询来完成某些操作
另一个有用的链接: