PostgreSQL 可以在 ORDER BY 中使用 FOR LOOP 吗?

Posted

技术标签:

【中文标题】PostgreSQL 可以在 ORDER BY 中使用 FOR LOOP 吗?【英文标题】:Can PostgreSQL use FOR LOOP in ORDER BY? 【发布时间】:2021-02-10 04:39:41 【问题描述】:

我可以这样写 SQL 语句吗?

    SELECT     
        ARRAY[array]
    FROM   table1
    ORDER BY 
       FOR i in array_length(array,1) LOOP 
                array[i]::numeric
            END LOOP; 

我想要的结果是:

SELECT     
   ARRAY[array]
FROM   table1
ORDER BY array[1]::numeric, array[2]::numeric, ...

我可以吗? :)

【问题讨论】:

【参考方案1】:

不,SQL 中没有LOOP。不过,它是诸如 PL/pgSQL 之类的过程语言的一个元素。见:

Postgres FOR LOOP

但是有一个更简单的方法

SELECT ...
FROM   table1
ORDER  BY array_column::numeric[];

数组值按元素值从左到右开箱排序。

要求:

    array_column 必须是一个数组,其元素类型已注册转换为numeric。像textvarchar 或其他一些。 否则,您也许可以使用text[] 作为垫脚石:array_column::text[]:numeric[]

    每个元素都可以投影到合法的numeric 值。

【讨论】:

哦.. 对不起,我不能,但谢谢。 :)

以上是关于PostgreSQL 可以在 ORDER BY 中使用 FOR LOOP 吗?的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL order by 排序问题

如何在 PostgreSQL ORDER BY 子句中使用别名?

PostgreSQL ORDER BY 语句

PostgreSQL ORDER BY 语句

有没有办法在聚合调用中不使用 ORDER BY 对 postgresql 自定义聚合中的行进行预排序?

IN() 子句中的 PostgreSQL ORDER BY 值