【问题标题】:PostgreSQL Record Reordering using Update with a Sub-Select使用带有子选择的更新的 PostgreSQL 记录重新排序
【发布时间】:2011-07-17 18:18:45
【问题描述】:

我在 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”

任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 重新排序行和设置列中的值(这显然是这个查询试图做的)是两件不同的事情。

标签: postgresql


【解决方案1】:

您不需要显式加入 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_number、sort_order、id_col 等。

【讨论】:

    猜你喜欢
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2013-07-09
    • 2014-01-14
    • 1970-01-01
    • 2019-03-02
    相关资源
    最近更新 更多