Изменение порядка записей в PostgreSQL с использованием функции «Обновление» с дополнительным выбором - PullRequest
1 голос
/ 17 июля 2011

Я нашел это решение на форуме 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 Ответ

4 голосов
/ 17 июля 2011

Вам не нужно явно присоединяться к 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 и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...