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

时间:2011-07-17 18:18:45

标签: 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

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

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

任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:4)

你不需要明确加入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

备注:Postgres不区分大小写,更好地使用小写,例如row_numbersort_orderid_col等。