我在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”
任何帮助将不胜感激。
谢谢!
答案 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_number
,sort_order
,id_col
等。