使用带有子选择的更新的 PostgreSQL 记录重新排序

use*_*122 2 postgresql

我在 SQL Server 论坛上找到了有关如何对表中的记录重新排序的解决方案。

UPDATE SomeTable
SET rankcol = SubQuery.Sort_Order
FROM
    (
    SELECT IDCol, Row_Number() OVER (ORDER BY ValueCOL) as SORT_ORDER
    FROM SomeTable
    ) SubQuery
INNER JOIN SomeTable ON
SubQuery.IDCol = SomeTable.IDCol
Run Code Online (Sandbox Code Playgroud)

当我尝试在 PostgreSQL 上做同样的事情时,我收到一条错误消息 -

错误:多次指定表名“sometable”

任何帮助将不胜感激。

谢谢!

man*_*iek 5

你不需要显式加入 SomeTable,这有多酷?:)

UPDATE SomeTable
SET rankcol = SubQuery.Sort_Order
FROM
    (
    SELECT IDCol, Row_Number() OVER (ORDER BY ValueCOL) as SORT_ORDER
    FROM SomeTable
    ) SubQuery
where SubQuery.IDCol = SomeTable.IDCol
Run Code Online (Sandbox Code Playgroud)

备注:Postgres的是不区分大小写,最好使用小写,如row_numbersort_orderid_col,等。